【Android】Mob短信驗(yàn)證

在用戶注冊的時(shí)候,短信驗(yàn)證碼想必是不可缺少的一個(gè)環(huán)節(jié),這里給大家介紹一個(gè)免費(fèi)的第三方短信驗(yàn)證SDK——Mob

想要使用Mob的短信驗(yàn)證需要在Mob的官網(wǎng)注冊,登錄后添加一個(gè)應(yīng)用才能得到App Key和App Secret(在SDK初始化的時(shí)候要用到)。

如何獲取App Key和App Secret的流程

  • 首先進(jìn)入官網(wǎng),登錄(沒有帳號(hào)的自己去注冊一個(gè))。鼠標(biāo)移動(dòng)到右側(cè)頭像處,點(diǎn)擊進(jìn)入后臺(tái)。
官網(wǎng)首頁
  • 選擇SecurityCodeSDK。
選擇短信SDK
  • 進(jìn)入后臺(tái)頁面后,點(diǎn)擊添加按鈕、填寫應(yīng)用名稱(這個(gè)可以隨便寫)、選擇Android后,點(diǎn)擊添加即可。
添加應(yīng)用
  • 添加成功后,就會(huì)進(jìn)入以下界面,在這里就可以看到剛剛申請成功的App Key和App Secret
得到Key和App Secret

下載SDK

  • 進(jìn)入官方SDK下載地址,選擇需要的進(jìn)行下載即可。
    我這里下載的是Eclipse版本的,解壓后得到如下目錄。(使用Studio的可以去下載對(duì)應(yīng)的SDK,查閱官方文檔
SDK目錄
  • 打開SMSSDK后看到以下內(nèi)容,里面有ShortMessageSDKGUI和SMSDK兩個(gè)文件夾(這里只用到SMSDK)。
    1.ShortMessageSDKGUI:該SDK中自帶的注冊界面,想了解的可以去看官方文檔。
    2.SMSSDK:短信驗(yàn)證碼的功能都在這里面。
SMSSDK目錄

導(dǎo)入

  • 將SMSSDK拷到需要用到該SDK項(xiàng)目的同級(jí)目錄下,以library的形式導(dǎo)入。


    Workspace目錄
  • 為工程中添加依賴


    添加依賴

如果只想導(dǎo)入jar包,需要拷貝SMSSDK中l(wèi)ib和res下的所有文件到自己的工程中不然會(huì)出現(xiàn)閃退的情況。

需要拷貝的文件

使用SMSDK發(fā)送短信驗(yàn)證碼,并驗(yàn)證。

想要了解更全面的用法,可以去看官方文檔

  • 友情提示
提示

也就是說,一天只能發(fā)20條短信,超過20條就不發(fā)送了。
還有個(gè)提示這邊沒說,我問了客服才知道的:同一個(gè)手機(jī)號(hào)碼一天之內(nèi)只能收到10條短信,12小時(shí)內(nèi)只能收到5條。(省著點(diǎn)用啊,別功能還沒完成,短信條數(shù)用完了,想要短信數(shù)量不限制,可以點(diǎn)擊圖中的立即前往,機(jī)智的你知道后面怎么做)


線上登記

SMSDK的使用

1、實(shí)現(xiàn)短信驗(yàn)證時(shí),用到的核心方法和類有以下幾個(gè):

1.初始化SDK,單例,可以多次調(diào)用;任何方法調(diào)用前,必須先初始化

initSDK(Context context, String appkey, String appSecrect)

2.注冊回調(diào)接口

registerEventHandler(EventHandler handler)

3.注銷回調(diào)接口

unregisterEventHandler(EventHandler handler)

4.接收回調(diào)的類

EventHandler 

initSDK方法是短信SDK的入口,需要傳遞您從ShareSDK應(yīng)用管理后臺(tái)中注冊的應(yīng)用AppKeyAppSecrete,如果填寫錯(cuò)誤,后續(xù)的操作都將不能進(jìn)行。registerEventHandler用來往SMSSDK中注冊一個(gè)事件接收器,SMSSDK允許開發(fā)者注冊任意數(shù)量的接收器,所有接收器都會(huì)在事件 被觸發(fā)時(shí)收到消息。

registerEventHandler必須和unregisterEventHandler配套使用,否則可能造成內(nèi)存泄漏。

5.獲取短信目前支持的國家列表,在監(jiān)聽中返回

getSupportedCountries()

6.請求獲取短信驗(yàn)證碼,在監(jiān)聽中返回

getVerificationCode(String country, String phone)

7.提交短信驗(yàn)證碼,在監(jiān)聽中返回

submitVerificationCode(String country, String phone, String code)

getVerificationCode用于向服務(wù)器請求發(fā)送驗(yàn)證碼的服務(wù),需要傳遞國家代號(hào)和接收驗(yàn)證碼的手機(jī)號(hào)碼,支持此服務(wù)的國家代碼在
getSupportedCountries中獲取。請求getVerificationCode的時(shí)間間隔不應(yīng)該小于60秒,否則服務(wù)端會(huì)返回“操作過 于頻繁”的錯(cuò)誤
submitVerificationCode用于向服務(wù)器提交接收到的短信驗(yàn)證碼,驗(yàn)證成功后會(huì)通過EventHandler返回國家代碼和電話號(hào)碼。

2、實(shí)現(xiàn)步驟
  • 配置AndroidManifest.xml,加入權(quán)限
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • 初始化SDK。
    // 填寫從短信SDK應(yīng)用后臺(tái)注冊得到的APPKEY
    private static String APPKEY = "121e463849218";
    // 填寫從短信SDK應(yīng)用后臺(tái)注冊得到的APPSECRET
    private static String APPSECRET = "568ec48c4c4a6ca5a2c857b0d8e99d2c";
SMSSDK.initSDK(context, APPKEY, APPSECRET);
  • 聲明EventHandler。(獲取驗(yàn)證碼成功、提交驗(yàn)證碼成功等回調(diào)都在EventHandler中實(shí)現(xiàn))
        EventHandler eh=new EventHandler() {
            @Override
            public void afterEvent(int event, int result, Object data) {

                if (result == SMSSDK.RESULT_COMPLETE) {
                    //回調(diào)完成
                    if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        //提交驗(yàn)證碼成功
                        Log.i("EventHandler", "提交驗(yàn)證碼成功");
                    }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
                        //獲取驗(yàn)證碼成功
                        Log.i("EventHandler", "獲取驗(yàn)證碼成功");
                    }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
                        //返回支持發(fā)送驗(yàn)證碼的國家列表
                        Log.i("EventHandler", "返回支持發(fā)送驗(yàn)證碼的國家列表");
                    } 
                }else{                                                                 
                    ((Throwable)data).printStackTrace(); 
                    Log.i("EventHandler", "回調(diào)失敗");
                }
            } 
        }; 

注意:afterEvent()并不在主線程中,因此回調(diào)完成的時(shí)候不能在afterEvent()中執(zhí)行更新UI,若需要執(zhí)行UI操作請使用Handler。

  • 注冊短信回調(diào)
SMSSDK.registerEventHandler(eh); //注冊短信回調(diào)

這樣就完成SDK的初始化和短信回調(diào)的注冊了,接下來只要調(diào)用發(fā)送短信和驗(yàn)證驗(yàn)證碼的接口就行了

  • 調(diào)用發(fā)送短信的接口
    參數(shù):country:國家(中國為86)、phone:電話號(hào)碼
SMSSDK.getVerificationCode(country, phone, null);
SMSSDK.getVerificationCode("86", "15852365236", null);

發(fā)送成功后,回調(diào)EventHandler 的afterEvent方法(event == SMSSDK.EVENT_GET_VERIFICATION_CODE)。

  • 調(diào)用驗(yàn)證碼驗(yàn)證接口
    參數(shù):country:國家(中國為86)、phone:電話號(hào)碼、code:驗(yàn)證碼
SMSSDK.submitVerificationCode(country, phone, code);
SMSSDK.submitVerificationCode("86", "15852365236", "5232");

驗(yàn)證成功后,回調(diào)EventHandler 的afterEvent方法(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)。

這樣就完成了簡單的短信驗(yàn)證了

參考:
Mob官網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容