1. 程式人生 > >Android開發:快速整合mob到專案的步驟

Android開發:快速整合mob到專案的步驟

        在Android開發中,開發國際業務在所難免,比如註冊使用者會員的時候,需要傳送全球都能搜到的驗證碼,根據各個不同國家來發送註冊時候用的驗證碼,這就需要用到第三方平臺來發送,本節就來分享一下mob平臺的國際簡訊驗證碼傳送服務的功能,以及把mob整合到專案中的方法。

        首先在使用mob簡訊服務之前,需要進入mob官網,註冊賬號,然後登陸,然後建立應用,然後獲取App Key和App Secret,然後再按照mob官網的整合步驟來進行進一步的整合使用操作。具體如下圖所示:

一、配置gradle

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

buildscript {

    repositories {

        jcenter()

    }

    dependencies {

        classpath 'com.mob.sdk:MobSDK:+'

    }

}

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

apply plugin: 'com.mob.sdk'

// 在MobSDK的擴充套件中註冊SMSSDK的相關資訊

MobSDK {

    appKey "d58XXXXXX4b5"

    appSecret "7fcae59aXXXXXXXXXXXXXXXX97c82bdd"

    SMSSDK {}

}

二、新增程式碼

1、初始化MobSDK

如果沒有在AndroidManifest中設定appliaction的類名,MobSDK會將這個設定為com.mob.MobApplication,但如果設定了appliaction的類名,請在專案的Application類中呼叫MobSDK.init(this),以便初始化MobSDK。如下所示:

MobSDK.init(this);

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

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

①視覺化介面完成操作:

    public void sendCode(Context context) {

    RegisterPage page = new RegisterPage();

    //如果使用mob的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"); // 手機號碼,如“13700137000”

                // 利用國家程式碼和手機號碼進行後續的操作

            } else{

                // 處理錯誤的結果

            }

        }

    });

    page.show(context);

}

②無介面介面完成操作:

// 嘗試讀取通訊錄時以彈窗提示使用者(可選功能)

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) {

                        // 處理成功得到驗證碼的結果

                        // 這裡只是完成了傳送驗證碼的請求,驗證碼簡訊還需要幾秒鐘之後才送達

                    } else {

                        // 處理錯誤的結果

                        ((Throwable) data).printStackTrace();

                    }

                } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {

                    if (result == SMSSDK.RESULT_COMPLETE) {

                        // 處理驗證碼驗證通過的結果

                    } else {

                        // 處理錯誤的結果

                        ((Throwable) data).printStackTrace();

                    }

                }

                // 其他介面的返回結果也類似,根據event判斷當前資料屬於哪個介面

                return false;

            }

        }).sendMessage(msg);

    }

};

// 註冊一個事件回撥,用於處理SMSSDK介面請求的結果

SMSSDK.registerEventHandler(eventHandler);

// 請求驗證碼,其中country表示國家程式碼,如“86”;phone表示手機號碼,如“13700137000”

SMSSDK.getVerificationCode(country, phone);

// 提交驗證碼,其中的code表示驗證碼,如“1345”

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()

}

以上就是本章全部內容,歡迎關注三掌櫃的微信公眾號、微博,歡迎關注!

                                                                                  官方微信公眾號

                                                                                       官方微信