昨天下载了Bmob官网云端逻辑的Demo,结果呢,代码不报错,客户端也没效果。好吧,我承认,不仅Demo过时了,官网介绍文档中的代码也TMD的过时了

95ca15c72eba

放气

原因在于官方Demo用的sdk版本已过时

所以我打算重新探一遍坑,Go

第1步【新建工程,导入Bmob的sdk】

maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }

compile 'cn.bmob.android:bmob-sdk:3.5.0'

多的不说老司机都懂

第2步【编写云端逻辑方法】

跳至Bmob项目的云逻辑处,添加方法,这里举例起名叫test,然后确定,在编写代码的区域内,清空原有代码,粘贴以下代码

95ca15c72eba

编写云端逻辑方法

function onRequest(request, response, modules) {

//获取SDK客户端上传的name参数

var name = request.body.name;

if(name == 'bmob')

response.end('Hello,简书');

else

response.end('输入错误,请重新输入');

}

Ok,代码解释一下,参照客户端请求的参数正确与否,实现返回字符串的功能,在线调试如下

95ca15c72eba

云端逻辑在线调试

第3步【初始化Bmob,写入云端逻辑】

官网新建项目,设置里复制Appkey

95ca15c72eba

Appkey

初始化

Bmob.initialize(this,"你的Appkey");

创建云端逻辑对象,并处理

//创建云端逻辑对象

AsyncCustomEndpoints ace = new AsyncCustomEndpoints();

//test对应你刚刚创建的云端逻辑名称

String cloudCodeName = "test";

JSONObject params = new JSONObject();

//name是上传到云端的参数名称,值是bmob,云端逻辑可以通过调用request.body.name获取这个值

try {

params.put("name","bmob");

} catch (JSONException e) {

e.printStackTrace();

}

ace.callEndpoint(cloudCodeName, params, new CloudCodeListener() {

@Override

public void done(Object object, BmobException e) {

if (e == null) {

Toast.makeText(

BmobCloudActivity.this

,object.toString()

,Toast.LENGTH_LONG).show();

} else {

Toast.makeText(

BmobCloudActivity.this

,e.getMessage()

,Toast.LENGTH_LONG).show();

}

}

});

重点是这句

ace.callEndpoint(cloudCodeName, params, new CloudCodeListener(){});

第一个参数是云端的代码的方法名,即合云端相符的test

第二个参数是传入的参数列表,即和云端相符的name对应的bmob值

第三个参数是监听回调器,用e判断连接状况,做出响应

然后object.toString()就能得到云端response.end()中的内容

编译看看效果吧

95ca15c72eba

当参数name对应值是bmob时的回调结果

95ca15c72eba

当参数name对应值非bmob时的回调结果

【探坑到此结束】

95ca15c72eba

嘿嘿嘿

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐