昨天下載了Bmob官網(wǎng)云端邏輯的Demo屁商,結(jié)果呢绢彤,代碼不報錯七问,客戶端也沒效果。好吧茫舶,我承認(rèn)械巡,不僅Demo過時了,官網(wǎng)介紹文檔中的代碼也TMD的過時了
原因在于官方Demo用的sdk版本已過時
所以我打算重新探一遍坑饶氏,Go
第1步【新建工程讥耗,導(dǎo)入Bmob的sdk】
maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
compile 'cn.bmob.android:bmob-sdk:3.5.0'
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
多的不說老司機(jī)都懂
第2步【編寫云端邏輯方法】
跳至Bmob項目的云邏輯處,添加方法疹启,這里舉例起名叫test古程,然后確定,在編寫代碼的區(qū)域內(nèi)喊崖,清空原有代碼挣磨,粘貼以下代碼
function onRequest(request, response, modules) {
//獲取SDK客戶端上傳的name參數(shù)
var name = request.body.name;
if(name == 'bmob')
response.end('Hello,簡書');
else
response.end('輸入錯誤雇逞,請重新輸入');
}
Ok,代碼解釋一下茁裙,參照客戶端請求的參數(shù)正確與否塘砸,實現(xiàn)返回字符串的功能,在線調(diào)試如下
第3步【初始化Bmob晤锥,寫入云端邏輯】
官網(wǎng)新建項目掉蔬,設(shè)置里復(fù)制Appkey
初始化
Bmob.initialize(this,"你的Appkey");
創(chuàng)建云端邏輯對象,并處理
//創(chuàng)建云端邏輯對象
AsyncCustomEndpoints ace = new AsyncCustomEndpoints();
//test對應(yīng)你剛剛創(chuàng)建的云端邏輯名稱
String cloudCodeName = "test";
JSONObject params = new JSONObject();
//name是上傳到云端的參數(shù)名稱矾瘾,值是bmob女轿,云端邏輯可以通過調(diào)用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(){});
第一個參數(shù)是云端的代碼的方法名,即合云端相符的test
第二個參數(shù)是傳入的參數(shù)列表,即和云端相符的name對應(yīng)的bmob值
第三個參數(shù)是監(jiān)聽回調(diào)器霜威,用e判斷連接狀況谈喳,做出響應(yīng)
然后object.toString()就能得到云端response.end()中的內(nèi)容
編譯看看效果吧
【探坑到此結(jié)束】