獲取mob的appkeyphp
http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D11、配置gradleapp
1、打開項目根目錄的build.gradle,在buildscrip–>dependencies 模塊下面添加 classpath ‘com.mob.sdk:MobSDK:+’,以下所示;ide
buildscript { repositories { jcenter() } dependencies { ... classpath 'com.mob.sdk:MobSDK:+' } }
2、在使用SMSSDK模塊的build.gradle中,添加MobSDK插件和擴展,如:oop
// 添加插件 apply plugin: 'com.mob.sdk' // 在MobSDK的擴展中註冊SMSSDK的相關信息 MobSDK { appKey "d580ad56b4b5" appSecret "7fcae59a62342e7e2759e9e397c82bdd" SMSSDK {} }
2、添加代碼gradle
1、初始化MobSDKui
若是您沒有在AndroidManifest中設置appliaction的類名,MobSDK會將這個設置爲com.mob.MobApplication,但若是您設置了,請在您本身的Application類中調用:this
MobSDK.init(this);
以初始化MobSDK。spa
2、發送驗證碼並取得驗證結果(若是提示489錯誤MD5錯誤請點擊這裏)插件
有兩種方法完成驗證碼短信的發送和驗證:調用可視化界面和使用無界面接口線程
2-1、以可視化界面完成操做
public void sendCode(Context context) { RegisterPage page = new RegisterPage(); //若是使用咱們的ui,沒有申請模板編號的狀況下需傳null page.setTempCode(null); page.setRegisterCallback(new EventHandler() { public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RESULT_COMPLETE) { // 處理成功的結果 HashMap<String,Object> phoneMap = (HashMap<String, Object>) data; String country = (String) phoneMap.get("country"); // 國家代碼,如「86」 String phone = (String) phoneMap.get("phone"); // 手機號碼,如「13800138000」 // TODO 利用國家代碼和手機號碼進行後續的操做 } else{ // TODO 處理錯誤的結果 } } }); page.show(context); }
2-2、以無界面接口完成操做
// 在嘗試讀取通訊錄時以彈窗提示用戶(可選功能) SMSSDK.setAskPermisionOnReadContact(true); EventHandler eventHandler = new EventHandler() { public void afterEvent(int event, int result, Object data) { // afterEvent會在子線程被調用,所以若是後續有UI相關操做,須要將數據發送到UI線程 Message msg = new Message(); msg.arg1 = event; msg.arg2 = result; msg.obj = data; new Handler(Looper.getMainLooper(), new Callback() { @Override public boolean handleMessage(Message msg) { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { if (result == SMSSDK.RESULT_COMPLETE) { // TODO 處理成功獲得驗證碼的結果 // 請注意,此時只是完成了發送驗證碼的請求,驗證碼短信還須要幾秒鐘以後才送達 } else { // TODO 處理錯誤的結果 ((Throwable) data).printStackTrace(); } } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { if (result == SMSSDK.RESULT_COMPLETE) { // TODO 處理驗證碼驗證經過的結果 } else { // TODO 處理錯誤的結果 ((Throwable) data).printStackTrace(); } } // TODO 其餘接口的返回結果也相似,根據event判斷當前數據屬於哪一個接口 return false; } }).sendMessage(msg); } }; // 註冊一個事件回調,用於處理SMSSDK接口請求的結果 SMSSDK.registerEventHandler(eventHandler); // 請求驗證碼,其中country表示國家代碼,如「86」;phone表示手機號碼,如「13800138000」 SMSSDK.getVerificationCode(country, phone); // 提交驗證碼,其中的code表示驗證碼,如「1357」 SMSSDK.submitVerificationCode(country, phone, code); // 使用完EventHandler需註銷,不然可能出現內存泄漏 protected void onDestroy() { super.onDestroy(); SMSSDK.unregisterEventHandler(eventHandler); }
3、混淆設置
SMSSDK已經作了混淆處理,再次混淆會致使不可預期的錯誤,請在您的混淆腳本中添加以下的配置,跳過對SMSSDK的混淆操做:
-keep class com.mob.**{*;} -keep class cn.smssdk.**{*;} -dontwarn com.mob.**
4、注意事項
1. SMSSDK默認會添加一套開源的GUI庫,若是您不須要這個庫,能夠在SMSSDK下設置「gui false」來關閉它
2. MobSDK默認爲SMSSDK提供最新版本的集成,若是您想鎖定某個版本,能夠在SMSSDK下設置「version 「某個版本」」來固定使用這個版本
3. 若是使用MobSDK的模塊會被其它模塊依賴,請確保依賴它的模塊也引入MobSDK插件,或在此模塊的gradle中添加:
repositories { jcenter() }