Android Mob SMSSDK集成(手机短信验证功能)

首先进入Mob的官方网址
如果没有注册过则先注册然后登录
现在就进入了首页
Android Mob SMSSDK集成(手机短信验证功能)
再点击进入后台
Android Mob SMSSDK集成(手机短信验证功能)
进去以后
Android Mob SMSSDK集成(手机短信验证功能)
到现在,应用就创建完成了,也能够获取自己的Appkey和AppSecret,这些都会在后面的配置中使用到

现在在自己的项目的build文件中添加
在dependencies里添加

classpath 'com.mob.sdk:MobSDK:+'

然后在自己当前的module的build中添加

在最上面添加

apply plugin: 'com.mob.sdk'

在Android中添加

MobSDK {
        appKey "自己刚才创建应用完成后的appkey"
        appSecret "自己刚才创建应用完成后的appsecret"
        SMSSDK {}
    }

然后在自己的appliaction文件中初始化

在oncreate方法中添加

MobSDK.init(this);

不要忘了在清单文件中添加上

现在就剩下获取验证码的页面设置,mob为我们提供了可视化界面和无界面
首先是可视化界面

public void sendCode(Context context) {
    RegisterPage page = new RegisterPage();
    //如果使用我们的ui,没有申请模板编号的情况下需传null
    page.setTempCode(null);
    page.setRegisterCallback(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 处理成功的结果
                HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
                String country = (String) phoneMap.get("country"); // 国家代码,如“86”
                String phone = (String) phoneMap.get("phone"); // 手机号码,如“13800138000”
                // TODO 利用国家代码和手机号码进行后续的操作
            } else{
                // TODO 处理错误的结果
            }
        }
    });
    page.show(context);
}

这个是无界面的

// 在尝试读取通信录时以弹窗提示用户(可选功能)
SMSSDK.setAskPermisionOnReadContact(true);
 
 //这个需要放在方法外
EventHandler eventHandler = new EventHandler() {
    public void afterEvent(int event, int result, Object data) {
        // afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
        Message msg = new Message();
        msg.arg1 = event;
        msg.arg2 = result;
        msg.obj = data;
        new Handler(Looper.getMainLooper(), new Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                int event = msg.arg1;
                int result = msg.arg2;
                Object data = msg.obj;
                if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    if (result == SMSSDK.RESULT_COMPLETE) {
                        // TODO 处理成功得到验证码的结果
                        // 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
                    } else {
                        // TODO 处理错误的结果
                        ((Throwable) data).printStackTrace();
                    }
                } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    if (result == SMSSDK.RESULT_COMPLETE) {
                        // TODO 处理验证码验证通过的结果
                    } else {
                        // TODO 处理错误的结果
                        ((Throwable) data).printStackTrace();
                    }
                }
                // TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
                return false;
            }
        }).sendMessage(msg);
    }
};

// 注册一个事件回调,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eventHandler);

// 请求验证码时调用,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
SMSSDK.getVerificationCode(country, phone);
 
// 提交验证码时调用,其中的code表示验证码,如“1357”
SMSSDK.submitVerificationCode(country, phone, code);
 
// 使用完EventHandler需注销,否则可能出现内存泄漏
protected void onDestroy() {
    super.onDestroy();
    SMSSDK.unregisterEventHandler(eventHandler);
}

混淆的设置

-keep class com.mob.**{*;}
-keep class cn.smssdk.**{*;}
-dontwarn com.mob.**