- 首先到Mon(http://www.mob.com/)官网上注册登录,添加一个SMSSDK应用,获取App Key和App Secret。
-
快速集成配置
打开项目根目录 Project 下的build.gradle文件,添加如下配置:
在app模块的build.gradle中,添加MobSDK插件和扩展:
// 添加插件
apply plugin: 'com.mob.sdk'
// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"
SMSSDK {}
}
注意项目的minSdkVersion最小要改为15,否则build过程会报错。
- 初始化MobSDK
如在RegisterActivity的onCreate()方法中初始化:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
//在onCreate方法初始化SDK
MobSDK.init(RegisterActivity.this);
initView();
initEvent();
initSMS();
}
- 注册回调监听
//注册回调监听,放到发送和验证前注册,注意这里是子线程需要传到主线程中去操作后续提示
private void initSMS() {
eh = new EventHandler(){
@Override
public void afterEvent(int event, int result, Object data) {
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
handler.sendMessage(msg);
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调
}
- 处理点击事件
@Override
public void onClick(View v) {
String phoneNum = phone.getText().toString().trim();
switch(v.getId()){
case R.id.register_get_code:
if(TextUtils.isEmpty(phoneNum)){
Toast.makeText(this,"手机号码不能为空",Toast.LENGTH_SHORT).show();
}else{
if(checkTel(phoneNum)){
//调用发送短信的接口
//发送成功后回调event == SMSSDK.EVENT_GET_VERIFICATION_CODE
SMSSDK.getVerificationCode("86",phoneNum);
getcode.setClickable(false);
//开始倒计时
new Thread(new Runnable() {
@Override
public void run() {
for(; i>0; i--){
handler.sendEmptyMessage(-1);
try{
Thread.sleep(1000); //1s
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//倒计时结束后执行
handler.sendEmptyMessage(-2);
}
}).start();
}else{
Toast.makeText(this,"请输入正确的手机号码",Toast.LENGTH_SHORT).show();
}
}
break;
case R.id.register:
String codeNum = code.getText().toString().trim();
if(TextUtils.isEmpty(phoneNum)){
Toast.makeText(this,"手机号码不能为空",Toast.LENGTH_SHORT).show();
}else if(TextUtils.isEmpty(codeNum)){
Toast.makeText(this,"验证码不能为空",Toast.LENGTH_SHORT).show();
}else{
if(checkTel(phoneNum)){
//调用验证码验证接口
//成功后回调event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE
SMSSDK.submitVerificationCode("86",phoneNum,codeNum);
}else{
Toast.makeText(this,"请输入正确的手机号码",Toast.LENGTH_SHORT).show();
}
}
break;
default:
break;
}
}
//正则匹配手机号码
public boolean checkTel(String tel){
Pattern p = Pattern.compile("^[1][3|4|5|7|8][0-9]{9}$");
Matcher matcher = p.matcher(tel);
return matcher.matches();
}
对事件的处理在主线程的Handler中写。
- 销毁监听接口
@Override
protected void onDestroy() {
super.onDestroy();
//在完成短信验证之后,需要销毁回调监听接口
SMSSDK.unregisterAllEventHandler();
}