15-短信验证码SDK使用以及用户注册
一、短信SDK验证码验证流程简介
用户填写完用户名以及密码之后,就可以进行短信验证。由于邮箱验证比较繁琐,一般都采用短信验证。
短信验证的核心流程如下图所示:
如果是自己去做短信验证功能的话,最好按照以上流程走。一般为了节约经费,我们都是采用接入第三方的短信验证SDK的方式来进行开发。
以MOB的短信验证SDK为例,SDK已经封装好以上流程,用户只需要知道API接口就可以进行短信验证。试用期的话,每天上限20条。
二、短信SDK接入
1、在短信SDK的网址注册,然后注册APP,获取APPKey等信息。
2、按照官方文档进行集成。需要注意的是,在Android Studio中是通过Module的信息进行Library依赖。另外,如果发生jar包冲突(重复)的话,最好多建一个globalLibrary,并且把该jar放进去,其余Module删除,引用globalLibrary即可。
三、短信SDK使用
1、一般来说,需要进行SDK初始化,初始化中传入APPKey等信息。如果有注销的方法也要在onDestroy()方法中调用,以免内存泄漏。
SMSSDK.initSDK(.......);
2、根据官方文档进行开发,每一套SDK的使用都不一样,需要仔细阅读文档。遇到不懂的,除了文档以外,官方Demo也可以参考或者Copy。
注意要点:
1、一般请求短信验证码需要传国家代号以及电话作为参数,中国是86。电话号码最好做一下合法判断,比如长度、正则表达式匹配等。参考例子如下:
/**
* 检查国家代号以及手机号码是否正确
* @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, "请输入手机号码");
return;
}
if (code == "86") {
if (phone.length() != 11) {
ToastUtils.showToast(this, "手机号码长度不对");
return;
}
}
//正则匹配中国手机号码
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, "您输入的手机号码格式不正确");
return;
}
}
2、短信验证码请求间隔一般要大于60秒(具体SDK不同),否则服务器会返回“请求过于频繁”。因此我们自定义按钮计时器:
public class CountTimerView extends CountDownTimer {
public static final int TIME_COUNT = 61000;//时间防止从59s开始显示(以倒计时60s为例子)
private TextView btn;
private int endStrRid;
/**
* 参数 millisInFuture 倒计时总时间(如60S,120s等)
* 参数 countDownInterval 渐变时间(每次倒计1s)
* 参数 btn 点击的按钮(因为Button是TextView子类,为了通用我的参数设置为TextView)
* 参数 endStrRid 倒计时结束后,按钮对应显示的文字
*/
public CountTimerView(long millisInFuture, long countDownInterval, TextView btn, int endStrRid) {
super(millisInFuture, countDownInterval);
this.btn = btn;
this.endStrRid = endStrRid;
}
/**
* 参数上面有注释
*/
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;
}
// 计时完毕时触发
@Override
public void onFinish() {
btn.setText(endStrRid);
btn.setEnabled(true);
}
// 计时过程显示
@Override
public void onTick(long millisUntilFinished) {
btn.setEnabled(false);
btn.setText(millisUntilFinished / 1000 + " 秒后可重新发送");
}
}
四、短信验证完整流程
1、用户数据用户名以及密码
2、判断用户名以及密码的合法性
3、调用短信SDK获取验证码的接口,获取验证码
4、用户收到,输入验证码
5、获取用户输入的验证码,调用短信SDK验证码验证的接口,进行验证
6、验证通过以后,在回调中调用自己服务器的注册API,进行注册(其实这个才是核心代码),注册成功,销毁本Activity,跳到主Activity。
如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:
公众号:Android开发进阶我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)。