在用戶注冊的時候,短信驗證碼想必是不可缺少的一個環節,這里給大家介紹一個免費的第三方短信驗證SDK——Mob
想要使用Mob的短信驗證需要在Mob的官網注冊,登錄后添加一個應用才能得到App Key和App Secret(在SDK初始化的時候要用到)。
如何獲取App Key和App Secret的流程
- 首先進入官網,登錄(沒有帳號的自己去注冊一個)。鼠標移動到右側頭像處,點擊進入后臺。
- 選擇SecurityCodeSDK。
- 進入后臺頁面后,點擊添加按鈕、填寫應用名稱(這個可以隨便寫)、選擇Android后,點擊添加即可。
- 添加成功后,就會進入以下界面,在這里就可以看到剛剛申請成功的App Key和App Secret
下載SDK
- 打開SMSSDK后看到以下內容,里面有ShortMessageSDKGUI和SMSDK兩個文件夾(這里只用到SMSDK)。
1.ShortMessageSDKGUI:該SDK中自帶的注冊界面,想了解的可以去看官方文檔。
2.SMSSDK:短信驗證碼的功能都在這里面。
導入
-
將SMSSDK拷到需要用到該SDK項目的同級目錄下,以library的形式導入。
Workspace目錄 -
為工程中添加依賴
添加依賴
如果只想導入jar包,需要拷貝SMSSDK中lib和res下的所有文件到自己的工程中不然會出現閃退的情況。
使用SMSDK發送短信驗證碼,并驗證。
想要了解更全面的用法,可以去看官方文檔
- 友情提示
也就是說,一天只能發20條短信,超過20條就不發送了。
還有個提示這邊沒說,我問了客服才知道的:同一個手機號碼一天之內只能收到10條短信,12小時內只能收到5條。(省著點用啊,別功能還沒完成,短信條數用完了,想要短信數量不限制,可以點擊圖中的立即前往,機智的你知道后面怎么做)
線上登記
SMSDK的使用
1、實現短信驗證時,用到的核心方法和類有以下幾個:
1.初始化SDK,單例,可以多次調用;任何方法調用前,必須先初始化
initSDK(Context context, String appkey, String appSecrect)
2.注冊回調接口
registerEventHandler(EventHandler handler)
3.注銷回調接口
unregisterEventHandler(EventHandler handler)
4.接收回調的類
EventHandler
initSDK方法是短信SDK的入口,需要傳遞您從ShareSDK應用管理后臺中注冊的應用AppKey和AppSecrete,如果填寫錯誤,后續的操作都將不能進行。registerEventHandler用來往SMSSDK中注冊一個事件接收器,SMSSDK允許開發者注冊任意數量的接收器,所有接收器都會在事件 被觸發時收到消息。
registerEventHandler必須和unregisterEventHandler配套使用,否則可能造成內存泄漏。
5.獲取短信目前支持的國家列表,在監聽中返回
getSupportedCountries()
6.請求獲取短信驗證碼,在監聽中返回
getVerificationCode(String country, String phone)
7.提交短信驗證碼,在監聽中返回
submitVerificationCode(String country, String phone, String code)
getVerificationCode用于向服務器請求發送驗證碼的服務,需要傳遞國家代號和接收驗證碼的手機號碼,支持此服務的國家代碼在
getSupportedCountries中獲取。請求getVerificationCode的時間間隔不應該小于60秒,否則服務端會返回“操作過 于頻繁”的錯誤
submitVerificationCode用于向服務器提交接收到的短信驗證碼,驗證成功后會通過EventHandler返回國家代碼和電話號碼。
2、實現步驟
- 配置AndroidManifest.xml,加入權限
<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應用后臺注冊得到的APPKEY
private static String APPKEY = "121e463849218";
// 填寫從短信SDK應用后臺注冊得到的APPSECRET
private static String APPSECRET = "568ec48c4c4a6ca5a2c857b0d8e99d2c";
SMSSDK.initSDK(context, APPKEY, APPSECRET);
- 聲明EventHandler。(獲取驗證碼成功、提交驗證碼成功等回調都在EventHandler中實現)
EventHandler eh=new EventHandler() {
@Override
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {
//回調完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//提交驗證碼成功
Log.i("EventHandler", "提交驗證碼成功");
}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
//獲取驗證碼成功
Log.i("EventHandler", "獲取驗證碼成功");
}else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
//返回支持發送驗證碼的國家列表
Log.i("EventHandler", "返回支持發送驗證碼的國家列表");
}
}else{
((Throwable)data).printStackTrace();
Log.i("EventHandler", "回調失敗");
}
}
};
注意:afterEvent()并不在主線程中,因此回調完成的時候不能在afterEvent()中執行更新UI,若需要執行UI操作請使用Handler。
- 注冊短信回調
SMSSDK.registerEventHandler(eh); //注冊短信回調
這樣就完成SDK的初始化和短信回調的注冊了,接下來只要調用發送短信和驗證驗證碼的接口就行了
- 調用發送短信的接口
參數:country:國家(中國為86)、phone:電話號碼
SMSSDK.getVerificationCode(country, phone, null);
SMSSDK.getVerificationCode("86", "15852365236", null);
發送成功后,回調EventHandler 的afterEvent方法(event == SMSSDK.EVENT_GET_VERIFICATION_CODE)。
- 調用驗證碼驗證接口
參數:country:國家(中國為86)、phone:電話號碼、code:驗證碼
SMSSDK.submitVerificationCode(country, phone, code);
SMSSDK.submitVerificationCode("86", "15852365236", "5232");
驗證成功后,回調EventHandler 的afterEvent方法(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)。
這樣就完成了簡單的短信驗證了
參考:
Mob官網