Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之Mob第三方短信驗證服務

Android之Mob第三方短信驗證服務

編輯:關於Android編程

目錄


mob簡單介紹 前期准備
2.1注冊登錄 2.2創建應用 2.3下載sdk 2.4引入sdK 調用有界面接口
3.1效果圖 3.2配置AndroidManifest.xml 3.3添加代碼 調用無界面接口
4.1效果圖 4.2操作步驟 監聽器(回調接口) 智能短信驗證
6.1使用智能驗證 服務器短信服務
7.1接口使用 錯誤碼參考
8.1本地錯誤碼 8.2服務器錯誤碼 附加
9.1權限修改 9.2mob規則 demo下載地址

正文


1.mob簡單介紹

基本上很多驗證都需要用到短信服務,注冊登錄時或有消息通知時需要對用戶進行驗證,這時會向用戶發送一條短信。Mob是一個移動開發者服務平台,他可以為我們提供第三方的短信服務功能。開發者可以通過官網,注冊登錄並創建應用項目,獲取對應的Key,以及 Secret,就可以使用官方短信SDK。
個人覺得Mob最大的優勢在於,提供數據統計,對於應用分析是一個很好的數據參考。
這裡寫圖片描述

2. 前期准備

正如前面所說,要想使用Mob第三方短信驗證服務,開發者需要通過官網,注冊登錄並創建應用項目,獲取對應的Key,以及 Secret,就可以使用官方短信SDK。

2.1注冊登錄

進入官網,在右上角進行注冊並登錄
這裡寫圖片描述

2.2創建應用

2.2.1
登錄成功後,進入後台
這裡寫圖片描述
2.2.2
啟用短信應用SDK
這裡寫圖片描述
2.2.3
添寫應用信息,短信信息中會附有應用名稱
這裡寫圖片描述
2.2.4
得到key值以及secret
這裡寫圖片描述

2.3下載sdk

2.3.1
可以通過官網導航欄進入短信SDK界面
這裡寫圖片描述
也可以直接通過該鏈接:
http://download.csdn.net/download/abrazen_zz/9644555 進行下載
2.3.2
選擇IDE版本
這裡寫圖片描述

2.4引入sdk

這裡只講解Android Studio導入方式
2.4.1
打開下載好的SDK,在SMSSDK下,將以下標出的四個文件導入到項目app的libs目錄下(如果沒有libs文件夾可以直接新建)。
SMSSDK目錄如下:
這裡寫圖片描述
2.4.2
在build.gradle下,加上藍圈中的這幾句。
項目結構:
這裡寫圖片描述

3.調用有界面接口

3.1效果圖

考慮到等待時間較長,這裡省略輸入手機號碼界面,短信發至另外部手機,效果如下:
這裡寫圖片描述

3.2配置AndroidManifest.xml

3.2.1
添加如下的權限:









3.2.2
在application標簽下添加跳轉界面的Activity配置:

windowsoftinputmode="stateHidden|adjustResize">

3.3添加代碼

在你要跳轉到短信頁面時,按順序加入以下步驟的代碼
3.3.1
啟動時初始化

SMSSDK.initSDK(this, "您的appkey", "您的appsecret");

3.3.2
發送短信驗證碼
短信SDK內置了開源的GUI功能,您可以通過調用下面的代碼打開短信驗證頁面:

        //創建注冊頁面
        RegisterPage registerPage = new RegisterPage();
        //顯示界面
        registerPage.show(MainActivity.this);

        //回調函數
        registerPage.setRegisterCallback(new EventHandler() {
            public void afterEvent(int event, int result, Object data) {
                // 解析注冊結果
                if (result == SMSSDK.RESULT_COMPLETE) {
                    @SuppressWarnings("unchecked")
                    HashMap phoneMap = (HashMap) data;
                    String country = (String) phoneMap.get("country");
                    String phone = (String) phoneMap.get("phone");
                    Toast.makeText(MainActivity.this, "驗證成功", Toast.LENGTH_SHORT).show();
                    // 提交用戶信息(此方法可以不調用)
                    //registerUser(country, phone);
                }
            }
        });

只要初始化並顯示短信驗證界面,剩下的SDK都封裝好了。我們也可以監聽短信驗證的每個步驟,如請求獲取驗證短信,驗證成功,驗證失敗等等。
這裡使用setRegisterCallback()為短信添加一個EventHandler監聽方法,result == SMSSDK.RESULT_COMPLETE即驗證碼驗證成功後的監聽。
具體關於短信驗證的回調函數在下面有做分析,在這裡只是簡單的參考。

4.調用無界面接口

4.1效果圖

這裡是我自己制作的頁面,點擊驗證按鈕就會調用官方提供接口上傳手機號碼,從而請求下發短信。效果如下:
這裡寫圖片描述

4.2操作步驟

4.2.1
同理,這裡需要在AndroidManifest.xml中添加權限,因為不需要調用界面,所以不需要配置< activity>< /activity>.
4.2.2
在點擊事件,添加如下代碼:

  Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (msg.what == 1)
                    Toast.makeText(mActivity, "回調完成", Toast.LENGTH_SHORT).show();
                else if (msg.what == 2)
                    Toast.makeText(mActivity, "提交驗證碼成功", Toast.LENGTH_SHORT).show();
                else if (msg.what == 3)
                    Toast.makeText(mActivity, "獲取驗證碼成功", Toast.LENGTH_SHORT).show();
                else if (msg.what == 4)
                    Toast.makeText(mActivity, "返回支持發送國家驗證碼", Toast.LENGTH_SHORT).show();
            }
        };
        //回調函數
 EventHandler eh = new EventHandler() {
            @Override
            public void afterEvent(int event, int result, Object data) {
                if (result == SMSSDK.RESULT_COMPLETE) {
                    handler.sendEmptyMessage(1);
                    //回調完成
                    if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        //提交驗證碼成功
                        handler.sendEmptyMessage(2);

                    } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                        //獲取驗證碼成功
                        handler.sendEmptyMessage(3);

                    } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                        //返回支持發送驗證碼的國家列表
                        handler.sendEmptyMessage(4);
                    }
                } else {
                    ((Throwable) data).printStackTrace();
                }
            }
        };
        SMSSDK.initSDK(this, "您的appkey", "您的appsecret");//初始化
        SMSSDK.registerEventHandler(eh); //注冊短信回調

        SMSSDK.getVerificationCode("86", phone);//請求獲取短信驗證碼

這裡使用registerEventHandler()方法為短信驗證增加一個EventHandler的監聽對象。
其次,這裡只是請求下發短信到手機。並未進行判斷驗證碼是否准確。
可以通過
submitVerificationCode(String country, String phone, String code)
對短信進行驗證。請求成狗與否,驗證成功與否會調用回調函數EventHandler。

5. 監聽器(回調接口)

其中的EventHandler即為操作回調。它包括4個方法,分別為:

public void onRegister(); //注冊監聽時被觸發 public void beforeEvent(int event, Object);//操作執行前被觸發 public void afterEvent(int event, int result, Object data);//操作結束時被觸發(即相當於輸入手機號碼並點擊了驗證) public void onUnregister();//解除監聽時被觸發

其中要注意的是:afterEvent在操作結束時被觸發,event表示操作的類型但是,data表示事件操作結果,其具體取值根據參數result而定。result是操作結果,為SMSSDK.RESULT_COMPLETE表示操作成功,為SMSSDK.RESULT_ERROR表示操作失敗。
 

當result=SMSSDK.RESULT_COMPLETE時

先判斷result,再判斷event,之後直接將data強壯成對應的類型即可。
這裡寫圖片描述

短信SDK采用“廣播”的方式發送操作結果。每次調用registerEventHandler都會設置創建新的EventHandler。
為了避免EventHandler注冊後不再使用而造成內存洩漏,請務必在確定不使用某個EventHandler時,需要解除注冊,方法如下:

SMSSDK.unregisterEventHandler(EventHandler);

在EventHandler的4個回調方法都可能不在UI線程下,因此如果要在其中執行UI操作,請務必使用Handler發送一個消息給UI線程處理。

6. 智能短信驗證

從Android 1.3.1版本開始,我們新增了智能驗證功能。智能驗證是指您的手機號最近一次已經在Mob平台的SMSSDK驗證過。此時就不再下發短信到該手機上,直接通過驗證。當用戶手機未通過智能驗證時,則依然需要下發短信/語音驗證碼的方式驗證手機號的有效性。
如果你不想使用此功能,可以在短信的後台關閉,默認是打開。

6.1使用智能驗證

智能驗證依然在獲取短信驗證的api(SMSSDK.getVerificationCode)裡,只是操作回調中,需要判斷一下。當result=SMSSDK.RESULT_COMPLETE,則data的類型為Boolean,你需要判斷一下,如果為true,便是智能驗證。
調用代碼如下:

if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
    if(result == SMSSDK.RESULT_COMPLETE) {
    boolean smart = (Boolean)data;
    if(smart) {
           //通過智能驗證
        } else {
           //依然走短信驗證
        }
     }
}

7. 服務器短信服務

之前,短信驗證碼正確與否是在客戶端調用submitVerificationCode(String country, String phone, String code);進行判斷。
Mob提供服務器短信服務,即在驗證碼正確與否由自己的服務器調用相應的代碼進行判斷。這樣,客戶端只需要將獲取到的短信驗證碼提交到自己的服務器。再由自己的服務器向短信驗證的服務器去判定。

7.1接口使用

第一步:開通服務端驗證開關

免費短信驗證碼SDK/應用管理/短信設置 , 把服務端驗證接口開關開啟
這裡寫圖片描述

第二步:請求接口驗證短信<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxjb2RlPsfrx/O12Na3zqqjujxhIGhyZWY9"https://webapi.sms.mob.com/sms/verify">https://webapi.sms.mob.com/sms/verify
請求方式: POST
請求參數
這裡寫圖片描述
返回結果
{status:200}

8. 錯誤碼參考

8.1本地錯誤碼:

這裡寫圖片描述

8.2服務器錯誤碼:

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
如下,這是驗證碼輸入錯誤Android studio 報的錯誤..
這裡寫圖片描述
有了狀態碼,就能知道到底是本地發生錯誤還是服務器,具體是什麼錯誤。

9. 附加

9.1權限修改

9.1.1
SMSSDK中用到的權限
普通組:
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.INTERNET
android.permission.GET_TASKS
謹慎組:
android.permission.READ_PHONE_STATE
android.permission.RECEIVE_SMS
android.permission.READ_SMS
android.permission.READ_CONTACTS
android.permission.WRITE_EXTERNAL_STORAGE
這些權限一般在Manifest文件中按需加入

9.1.2
6.0權限
因為6.0權限授權的改變,即使你在Manifest中加入,有些權限依然需要獲得用戶的手動授權。由於手動授權在SDK中不好做,
它會中斷SDK的初始化,因此需要開發者自己實現權限授權。
上面普通組中的只需在manifest文件中加入即可。謹慎組中的需要額外授權。
如果你需要智能驗證,請授權READ_PHONE_STATE,READ_SMS。
如果你需要通訊錄功能,請授權READ_CONTACT。
如果你需要讀取SD卡,請授權WRITE_EXTERNAL_STORAGE
如果用到UI庫中的自動讀取驗證碼,請授權RECEIVE_SMS
具體授權過程請參考官方教材:
http://developer.android.com/training/permissions/index.html

9.2mob規則

mob規則是指,對短信數量及各方面做了限制。
具體參考該鏈接: http://wiki.mob.com/smssdk2-x-x%E9%BB%98%E8%AE%A4%E8%A7%84%E5%88%99/

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved