http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D11、配置gradlebash
一、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,以下所示;app
buildscript {
repositories {
jcenter()
}
dependencies {
...
classpath 'com.mob.sdk:MobSDK:+'
}
}
复制代码
二、在使用SMSSDK模块的build.gradle中,添加MobSDK插件和扩展,如:ide
// 添加插件
apply plugin: 'com.mob.sdk'
// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"
SMSSDK {}
}
复制代码
2、添加代码oop
一、初始化MobSDKgradle
若是您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但若是您设置了,请在您本身的Application类中调用:ui
MobSDK.init(this);
复制代码
以初始化MobSDK。this
有两种方法完成验证码短信的发送和验证:调用可视化界面和使用无界面接口插件
2-一、以可视化界面完成操做
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);
}
复制代码
2-二、以无界面接口完成操做
// 在尝试读取通讯录时以弹窗提示用户(可选功能)
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);
}
复制代码
3、混淆设置
SMSSDK已经作了混淆处理,再次混淆会致使不可预期的错误,请在您的混淆脚本中添加以下的配置,跳过对SMSSDK的混淆操做:
-keep class com.mob.**{*;}
-keep class cn.smssdk.**{*;}
-dontwarn com.mob.**
复制代码
4、注意事项
1. SMSSDK默认会添加一套开源的GUI库,若是您不须要这个库,能够在SMSSDK下设置“gui false”来关闭它
2. MobSDK默认为SMSSDK提供最新版本的集成,若是您想锁定某个版本,能够在SMSSDK下设置“version “某个版本””来固定使用这个版本
3. 若是使用MobSDK的模块会被其它模块依赖,请确保依赖它的模块也引入MobSDK插件,或在此模块的gradle中添加:
repositories {
jcenter()
}
复制代码