Android教程 如何免費使用SMSSDK

皮皮醬發表於2018-12-28

獲取mob的appkey

http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1一、配置gradle

1、開啟專案根目錄的build.gradle,在buildscrip–>dependencies 模組下面新增 classpath ‘com.mob.sdk:MobSDK:+’,如下所示;

buildscript {
    repositories {
        jcenter()
    }
 
    dependencies {
        ...
        classpath 'com.mob.sdk:MobSDK:+'
 
    }
}
複製程式碼

Android教程 如何免費使用SMSSDK

2、在使用SMSSDK模組的build.gradle中,新增MobSDK外掛和擴充套件,如:

// 新增外掛
apply plugin: 'com.mob.sdk'
 
// 在MobSDK的擴充套件中註冊SMSSDK的相關資訊
MobSDK {
    appKey "d580ad56b4b5"
    appSecret "7fcae59a62342e7e2759e9e397c82bdd"
 
    SMSSDK {}
}
複製程式碼

二、新增程式碼

1、初始化MobSDK

如果您沒有在AndroidManifest中設定appliaction的類名,MobSDK會將這個設定為com.mob.MobApplication,但如果您設定了,請在您自己的Application類中呼叫:

MobSDK.init(this);
複製程式碼

以初始化MobSDK。

2、傳送驗證碼並取得驗證結果

有兩種方法完成驗證碼簡訊的傳送和驗證:呼叫視覺化介面和使用無介面介面

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);
}
複製程式碼

三、混淆設定

SMSSDK已經做了混淆處理,再次混淆會導致不可預期的錯誤,請在您的混淆指令碼中新增如下的配置,跳過對SMSSDK的混淆操作:

-keep class com.mob.**{*;}
-keep class cn.smssdk.**{*;}
-dontwarn com.mob.**
複製程式碼

四、注意事項

1. SMSSDK預設會新增一套開源的GUI庫,如果您不需要這個庫,可以在SMSSDK下設定“gui false”來關閉它
2. MobSDK預設為SMSSDK提供最新版本的整合,如果您想鎖定某個版本,可以在SMSSDK下設定“version “某個版本””來固定使用這個版本
3. 如果使用MobSDK的模組會被其它模組依賴,請確保依賴它的模組也引入MobSDK外掛,或在此模組的gradle中新增:

repositories {
    jcenter()
}
複製程式碼




相關文章