15-短信验证码SDK使用以及用户注册

一、短信SDK验证码验证流程简介

用户填写完用户名以及密码之后,就可以进行短信验证。由于邮箱验证比较繁琐,一般都采用短信验证。

短信验证的核心流程如下图所示:

15-短信验证码SDK使用以及用户注册_第1张图片

如果是自己去做短信验证功能的话,最好按照以上流程走。一般为了节约经费,我们都是采用接入第三方的短信验证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。

如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:

15-短信验证码SDK使用以及用户注册_第2张图片
公众号:Android开发进阶

我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)

你可能感兴趣的:(15-短信验证码SDK使用以及用户注册)