在用戶注冊的時候责蝠,短信驗證碼想必是不可缺少的一個環(huán)節(jié)党巾,這里給大家介紹一個免費的第三方短信驗證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中l(wèi)ib和res下的所有文件到自己的工程中不然會出現(xiàn)閃退的情況。
使用SMSDK發(fā)送短信驗證碼吨掌,并驗證半抱。
想要了解更全面的用法,可以去看官方文檔
- 友情提示
也就是說膜宋,一天只能發(fā)20條短信窿侈,超過20條就不發(fā)送了。
還有個提示這邊沒說秋茫,我問了客服才知道的:同一個手機號碼一天之內只能收到10條短信史简,12小時內只能收到5條。(省著點用啊肛著,別功能還沒完成圆兵,短信條數用完了跺讯,想要短信數量不限制,可以點擊圖中的立即前往衙傀,機智的你知道后面怎么做)
線上登記
SMSDK的使用
1抬吟、實現(xiàn)短信驗證時,用到的核心方法和類有以下幾個:
1.初始化SDK,單例统抬,可以多次調用火本;任何方法調用前,必須先初始化
initSDK(Context context, String appkey, String appSecrect)
2.注冊回調接口
registerEventHandler(EventHandler handler)
3.注銷回調接口
unregisterEventHandler(EventHandler handler)
4.接收回調的類
EventHandler
initSDK方法是短信SDK的入口聪建,需要傳遞您從ShareSDK應用管理后臺中注冊的應用AppKey和AppSecrete钙畔,如果填寫錯誤,后續(xù)的操作都將不能進行金麸。registerEventHandler用來往SMSSDK中注冊一個事件接收器擎析,SMSSDK允許開發(fā)者注冊任意數量的接收器,所有接收器都會在事件 被觸發(fā)時收到消息挥下。
registerEventHandler必須和unregisterEventHandler配套使用揍魂,否則可能造成內存泄漏。
5.獲取短信目前支持的國家列表棚瘟,在監(jiān)聽中返回
getSupportedCountries()
6.請求獲取短信驗證碼现斋,在監(jiān)聽中返回
getVerificationCode(String country, String phone)
7.提交短信驗證碼,在監(jiān)聽中返回
submitVerificationCode(String country, String phone, String code)
getVerificationCode用于向服務器請求發(fā)送驗證碼的服務偎蘸,需要傳遞國家代號和接收驗證碼的手機號碼庄蹋,支持此服務的國家代碼在
getSupportedCountries中獲取。請求getVerificationCode的時間間隔不應該小于60秒迷雪,否則服務端會返回“操作過 于頻繁”的錯誤
submitVerificationCode用于向服務器提交接收到的短信驗證碼限书,驗證成功后會通過EventHandler返回國家代碼和電話號碼。
2章咧、實現(xiàn)步驟
- 配置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中實現(xiàn))
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){
//返回支持發(fā)送驗證碼的國家列表
Log.i("EventHandler", "返回支持發(fā)送驗證碼的國家列表");
}
}else{
((Throwable)data).printStackTrace();
Log.i("EventHandler", "回調失敗");
}
}
};
注意:afterEvent()并不在主線程中,因此回調完成的時候不能在afterEvent()中執(zhí)行更新UI误澳,若需要執(zhí)行UI操作請使用Handler。
- 注冊短信回調
SMSSDK.registerEventHandler(eh); //注冊短信回調
這樣就完成SDK的初始化和短信回調的注冊了秦躯,接下來只要調用發(fā)送短信和驗證驗證碼的接口就行了
- 調用發(fā)送短信的接口
參數:country:國家(中國為86)忆谓、phone:電話號碼
SMSSDK.getVerificationCode(country, phone, null);
SMSSDK.getVerificationCode("86", "15852365236", null);
發(fā)送成功后,回調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官網