一、短信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 extendsCountDownTimer { 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, longcountDownInterval, 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。
|