在我們現在開發APP過程中,當使用者註冊時,簡訊驗證是必不可少的操作,這裡我們就是用一個免費的第三方簡訊驗證SDK-MOP
首先看下效果圖
擷取AppKey和AppSecret
首先進入官網,登入(沒有帳號的自己去註冊一個)。滑鼠移動到右側頭像處,點擊進入後台。
官網首頁
選擇SecurityCodeSDK。
選擇簡訊SDK
進入後台頁面後,點擊添加按鈕、填寫應用程式名稱(這個可以隨便寫)、選擇Android後,點擊添加即可。
添加應用
添加成功後,就會進入以下介面,在這裡就可以看到剛剛申請成功的App Key和App Secret
下載SDK
下載SDK
官方文檔
這裡我們選擇AndroidStudio版本
下載之後解壓,有一個SMSSDK檔案夾 裡面有4個包 ,把他們放到我們項目的libs下
之後開啟app下的buildgradle,按照下面的圖進行操作
這是AndroidStudio代碼
repositories{ flatDir{ dirs 'libs' }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile name:'SMSSDK-2.1.1',ext:'aar' compile name:'SMSSDKGUI-2.1.1',ext:'aar' compile 'com.android.support:appcompat-v7:23.3.0'}
配置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.READ_SMS" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
然後打“application”下添加如下activity:
<activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:windowSoftInputMode="stateHidden|adjustResize"/>
使用SMSSDK傳送簡訊驗證碼,並驗證
核心方法
1.初始化SDK,單例,可以多次調用;任何方法調用前,必須先初始化
initSDK(Context context, String appkey, String appSecrect)
2.註冊回調介面
registerEventHandler(EventHandler handler)
3.登出回調介面
unregisterEventHandler(EventHandler handler)
4.接收回調的類
initSDK方法是簡訊SDK的入口,需要傳遞您從ShareSDK應用管理後台中註冊的應用AppKey和AppSecrete,如果填寫錯誤,後續的操作都將不能進行。registerEventHandler用來往SMSSDK中註冊一個事件接收器,SMSSDK允許開發人員註冊任意數量的接收器,所有接收器都會在事件 被觸發時收到訊息。
registerEventHandler必須和unregisterEventHandler配套使用,否則可能造成記憶體流失。
5.擷取簡訊目前支援的國家列表,在監聽中返回
6.請求擷取簡訊驗證碼,在監聽中返回
getVerificationCode(String country, String phone)
7.提交簡訊驗證碼,在監聽中返回
submitVerificationCode(String country, String phone, String code)
getVerificationCode用於向伺服器請求發送驗證碼的服務,需要傳遞國家代號和接收驗證碼的手機號碼,支援此服務的國家代碼在 getSupportedCountries中擷取。請求getVerificationCode的時間間隔不應該小於60秒,否則服務端會返回“操作過 於頻繁”的錯誤 submitVerificationCode用於向伺服器提交接收到的簡訊驗證碼,驗證成功後會通過EventHandler返回國家代碼和電話號碼。
具體實現步驟
初始化SDK。
// 填寫從簡訊SDK應用後台註冊得到的APPKEY
private static String APPKEY = "154e3e410abc3";
// 填寫從簡訊SDK應用後台註冊得到的APPSECRET
private static String APPSECRET = "05713446f9786e2ad096c46fd4735dfe";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的初始化和簡訊回調的註冊了,接下來只要調用傳送簡訊和驗證驗證碼的介面就行了
銷毀回調監聽介面
SMSSDK.unregisterAllEventHandler();
開啟註冊介面
// 開啟註冊頁面 RegisterPage registerPage = new RegisterPage(); registerPage.setRegisterCallback(new EventHandler() { public void afterEvent(int event, int result, Object data) { // 解析註冊結果 if (result == SMSSDK.RESULT_COMPLETE) { @SuppressWarnings("unchecked") HashMap<String,Object> phoneMap = (HashMap<String, Object>) data; String country = (String) phoneMap.get("country"); String phone = (String) phoneMap.get("phone"); // 提交使用者資訊 registerUser(country, phone); } } }); registerPage.show(this);
這樣就完成了簡單的簡訊驗證了
PS:
把項目上傳到Github上了,附上地址
Github項目地址
以上所述是小編給大家介紹的Android實現簡訊驗證功能的代碼的相關知識,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!