標(biāo)題: 商城開發(fā)筆記-15-短信驗證碼SDK使用以及用戶注冊 [打印本頁]
作者: 51黑bing 時間: 2016-3-22 17:32
標(biāo)題: 商城開發(fā)筆記-15-短信驗證碼SDK使用以及用戶注冊
一、短信SDK驗證碼驗證流程簡介
用戶填寫完用戶名以及密碼之后,就可以進(jìn)行短信驗證。由于郵箱驗證比較繁瑣,一般都采用短信驗證。
短信驗證的核心流程如下圖所示:
如果是自己去做短信驗證功能的話,最好按照以上流程走。一般為了節(jié)約經(jīng)費,我們都是采用接入第三方的短信驗證SDK的方式來進(jìn)行開發(fā)。
以MOB的短信驗證SDK為例,SDK已經(jīng)封裝好以上流程,用戶只需要知道API接口就可以進(jìn)行短信驗證。試用期的話,每天上限20條。
二、短信SDK接入
1、在短信SDK的網(wǎng)址注冊,然后注冊APP,獲取APPKey等信息。
2、按照官方文檔進(jìn)行集成。需要注意的是,在Android Studio中是通過Module的信息進(jìn)行Library依賴。另外,如果發(fā)生jar包沖突(重復(fù))的話,最好多建一個globalLibrary,并且把該jar放進(jìn)去,其余Module刪除,引用globalLibrary即可。
三、短信SDK使用
1、一般來說,需要進(jìn)行SDK初始化,初始化中傳入APPKey等信息。如果有注銷的方法也要在onDestroy()方法中調(diào)用,以免內(nèi)存泄漏。
SMSSDK.initSDK(.......);
2、根據(jù)官方文檔進(jìn)行開發(fā),每一套SDK的使用都不一樣,需要仔細(xì)閱讀文檔。遇到不懂的,除了文檔以外,官方Demo也可以參考獲取Copy。
注意要點:
1、一般請求短信驗證碼需要傳國家代號以及電話作為參數(shù),中國是86。電話號碼最好做一下合法判斷,比如長度、正則表達(dá)式匹配等。參考例子如下:
/**
* 檢查國家代號以及手機(jī)號碼是否正確
* @param phone
* @param code
*/
private void checkPhoneNum(String phone, String code) {
if (code.startsWith("+")) {
code = code.substring(1);
}
if (TextUtils.isEmpty(phone)) {
ToastUtils.showToast(this, "請輸入手機(jī)號碼");
return;
}
if (code == "86") {
if (phone.length() != 11) {
ToastUtils.showToast(this, "手機(jī)號碼長度不對");
return;
}
}
//正則匹配中國手機(jī)號碼
String rule = "^1(3|5|7|8|4)\\d{9}";
Pattern p = Pattern.compile(rule);
Matcher m = p.matcher(phone);
if (!m.matches()) {
ToastUtils.showToast(this, "您輸入的手機(jī)號碼格式不正確");
return;
}
}
2、短信驗證碼請求間隔一般要大于60秒(具體SDK不同),否則服務(wù)器會返回“請求過于頻繁”。因此我們自定義按鈕計時器:
public class CountTimerView extendsCountDownTimer {
public static final int TIME_COUNT = 61000;//時間防止從59s開始顯示(以倒計時60s為例子)
private TextView btn;
private int endStrRid;
/**
* 參數(shù) millisInFuture 倒計時總時間(如60S,120s等)
* 參數(shù) countDownInterval 漸變時間(每次倒計1s)
* 參數(shù) btn 點擊的按鈕(因為Button是TextView子類,為了通用我的參數(shù)設(shè)置為TextView)
* 參數(shù) endStrRid 倒計時結(jié)束后,按鈕對應(yīng)顯示的文字
*/
public CountTimerView(long millisInFuture, longcountDownInterval, TextView btn, int endStrRid) {
super(millisInFuture, countDownInterval);
this.btn = btn;
this.endStrRid = endStrRid;
}
/**
* 參數(shù)上面有注釋
*/
public CountTimerView(TextView btn, int endStrRid) {
super(TIME_COUNT, 1000);
this.btn = btn;
this.endStrRid = endStrRid;
}
public CountTimerView(TextView btn) {
super(TIME_COUNT, 1000);
this.btn = btn;
this.endStrRid = R.string.smssdk_resend_identify_code;
}
// 計時完畢時觸發(fā)
@Override
public void onFinish() {
btn.setText(endStrRid);
btn.setEnabled(true);
}
// 計時過程顯示
@Override
public void onTick(long millisUntilFinished) {
btn.setEnabled(false);
btn.setText(millisUntilFinished/ 1000 + " 秒后可重新發(fā)送");
}
}
四、短信驗證完整流程
1、用戶數(shù)據(jù)用戶名以及密碼
2、判斷用戶名以及密碼的合法性
3、調(diào)用短信SDK獲取驗證碼的接口,獲取驗證碼
4、用戶收到,輸入驗證碼
5、獲取用戶輸入的驗證碼,調(diào)用短信SDK驗證碼驗證的接口,進(jìn)行驗證
6、驗證通過以后,在回調(diào)中調(diào)用自己服務(wù)器的注冊API,進(jìn)行注冊,注冊成功,銷毀本Activity,跳到主Activity。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |