android的 短信集成,Android短信驗證碼SMSSDK集成與使用

在用戶注冊的過程中,我們常常可以看到使用短信驗證碼的方式來驗證用戶手機號的真實性。在此就分享下SMSSDK的集成與使用。(Android Studio版)

第一:到其官網下載SMSSDK  http://www.mob.com/#/ ,然后在其后台添加一個APP

a3b3a9e9148ef0500276024f5e518414.png

第二:下載下來后解壓文件,進入到他的SMSSDK文件夾里可以看到都有如下文件:

1233d677613bbfb4a7c2bcaa1d9951c8.png

1,將兩jar包和SMSSDK-2.1.2.arr添加到你Android Studio工程目錄下的libs文件里。若要添加帶GUI界面的可以把后面那個arr也加入進去,此處采用無GUI的。

即:如果你需要用GUI庫,則需要加入全部這四個文件,不需要可以去掉SMSSDKGUI。為了方便和ShareSDK一起集成,公共庫依然打包成jar。

如果你同時使用ShareSDK,保留一份公共庫就行(公共庫版本一致或兼容)。

將以上文件按需放入Android Studio項目所要使用SMSSDK的Module所在的Libs里面,

再在Module的build.gradle里面將libs加入倉庫(repositories),

然后添加依賴(dependencies )示例如下:

,2,

repositories{

flatDir{

dirs 'libs' //就是你放aar的目錄地址

}

}

3,

dependencies {

....//你的其他依賴

compile name:'SMSSDK-此處填寫版本號',ext:'aar'

compile name:'SMSSDKGUI-此處填寫版本號',ext:'aar'

}

4,到此若沒有出現其他問題則集成完畢,接下來我們要配置他的一些權限和初始化信息:

打開您項目的“AndroidManifest.xml”,在其中添加如下的權限:

然后在“application”下添加如下activity:

android:name="com.mob.tools.MobUIShell"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:windowSoftInputMode="stateHidden|adjustResize"/>

然后在我們應用的Application類或MainActivity的onCreate()方法里初始化SDK:

SMSSDK.initSDK(this, "您的appkey", "您的appsecret");其中appkey和appsecret即為你在mob后台添加的應用信息,替換即可。更多集成細節請移步:

這里

5,到此短信sdk的集成和配置已完成。可以調用其PAI愉快的玩耍啦...

第三:接下來我們看其短信驗證的代碼實現

1,涉及到與后台信息交換的sdk,一般都是采用觀察者的設計模式。SMSSDK亦是如此。

注冊一個事件接收器:在onCreate()方法里

private void initReceiverCode(){

this.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) {

//提交驗證碼成功

myHandler.sendEmptyMessage(1);

} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {

//獲取驗證碼成功

myHandler.sendEmptyMessage(2);

} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {

//返回支持發送驗證碼的國家列表

}

} else {

((Throwable) data).printStackTrace();

//此語句代表接口返回失敗

//獲取驗證碼失敗。短信驗證碼驗證失敗(用flage標記來判斷)

if (smsFlage==1) {

myHandler.sendEmptyMessage(3);

}else if (smsFlage==2){

myHandler.sendEmptyMessage(4);

}

}

}

};

SMSSDK.registerEventHandler(eh);//注冊短信回調

}

程序退出時在onDestory()方法里:注銷回調接口 registerEventHandler必須和unregisterEventHandler配套使用,否則可能造成內存泄漏。

SMSSDK.unregisterEventHandler(eh);2, 獲取短信驗證碼 請求獲取短信驗證碼,在監聽中返回

SMSSDK.getVerificationCode(country, phone);3,提交驗證碼去mob后台驗證用戶輸入的驗證碼是否正確,在監聽中返回

SMSSDK.submitVerificationCode(country, phone, code);4,最后在afterEvent(int event,int result,Object data)回調方法里做處理即可。

注意:短信邏輯的實現過程中需要着重注意有兩種情況要考慮:第一:用戶點擊獲取一下嗎按鈕后驗證碼是否獲取成功  第二:用戶提交到mob后台的驗證碼是否驗證成功。所以我們要在else語句中設置一個標記值smsFlage來判斷是獲取驗證碼失敗還是提交驗證碼驗證失敗。

更多使用詳情請移步其文檔:點擊這里

5,好了最后帖上完整的代碼:

//工程集成Mob的SMSSDK后,調用即可

//1 注冊回調接口 初始化短信接送監聽器【注意:回掉接口在非UI線程中so要用到Handler來通知用戶】在onCreate()方法里init

private EventHandler eh;

public int smsFlage = 0;//0:設置為初始化值 1:請求獲取驗證碼 2:提交用戶輸入的驗證碼判斷是否正確

private void initReceiverCode(){

this.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) {

//提交驗證碼成功

myHandler.sendEmptyMessage(1);

} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {

//獲取驗證碼成功

myHandler.sendEmptyMessage(2);

} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {

//返回支持發送驗證碼的國家列表

}

} else {

((Throwable) data).printStackTrace();

//此語句代表接口返回失敗

//獲取驗證碼失敗。短信驗證碼驗證失敗(用flage標記來判斷)

if (smsFlage==1) {

myHandler.sendEmptyMessage(3);

}else if (smsFlage==2){

myHandler.sendEmptyMessage(4);

}

}

}

};

SMSSDK.registerEventHandler(eh);//注冊短信回調

}

//2 獲取短信驗證碼 請求獲取短信驗證碼,在監聽中返回

private void getSmsCode(String country, String phone){

SMSSDK.getVerificationCode(country, phone);//請求獲取短信驗證碼,在監聽中返回

}

//3 提交驗證碼

private void submitCode(String country, String phone, String code){

SMSSDK.submitVerificationCode(country, phone, code);//提交短信驗證碼,在監聽中返回

}

//4 注銷回調接口 registerEventHandler必須和unregisterEventHandler配套使用,否則可能造成內存泄漏。

private void unregisterHandler(){

SMSSDK.unregisterEventHandler(eh);

// Log.v("TAG", "注銷回調接口");

}

Handler myHandler=new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

switch (msg.what){

case 1: //驗證碼驗證成功

//執行bmob注冊

registerUser();

break;

case 2: //獲取驗證碼成功,注意查看

ShowToas.showToast(RegisterActivity.this, "獲取驗證碼成功,注意查看");

break;

case 3: //獲取驗證碼失敗,請填寫正確的手機號碼

ShowToas.showToast(RegisterActivity.this, "獲取驗證碼失敗,請填寫正確的手機號碼");

break;

case 4: //驗證碼驗證錯誤

ShowToas.showToast(RegisterActivity.this, "驗證碼錯誤");

break;

}

}

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值