PHP短信接口集成方式介绍!
PHP短信接口PHP短信短信接口
2018-11-12

PHP短信接口是开发商城网站,APP平台必不可少的,因为这些网站社区或是平台都需要用户进行注册 或是登录,php短信接口请求第三方接口的一般都是先存数据库,定时调用接口,成功后修改状态,目前市场上短信接口服务商有很多,以MobSSDK短信接口为例:

 

登陆mob官网(http://www.mob.com/)注册登陆,点击进入后台,获取mob的appkey。(以下为安卓集成方式,ios等其他集成方式,点击Mob短信接口文档即可http://wiki.mob.com/sdk-sms-android-3-0-0/

 

一、配置gradle

1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,如下所示;

 

 

buildscript {

repositories {

jcenter()

}

 

dependencies {

...

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

 

}

}

buildscript {

repositories {

jcenter()

}

 

dependencies {

...

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

 

}

}

 

 

2、在使用SMSSDK模块的build.gradle中,添加MobSDK插件和扩展,如:

 

// 添加插件

apply plugin: 'com.mob.sdk'

 

// 在MobSDK的扩展中注册SMSSDK的相关信息

MobSDK {

appKey "d580ad56b4b5"

appSecret "7fcae59a62342e7e2759e9e397c82bdd"

 

SMSSDK {}

}

// 添加插件

apply plugin: 'com.mob.sdk'

 

// 在MobSDK的扩展中注册SMSSDK的相关信息

MobSDK {

appKey "d580ad56b4b5"

appSecret "7fcae59a62342e7e2759e9e397c82bdd"

 

SMSSDK {}

}

二、添加代码

1、初始化MobSDK

 

如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:

 

 

MobSDK.init(this);

1

MobSDK.init(this);

以初始化MobSDK。

 

2、发送验证码并取得验证结果

 

有两种方法完成验证码短信的发送和验证:调用可视化界面和使用无界面接口

 

2-1、以可视化界面完成操作

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 phoneMap = (HashMap) data;

String country = (String) phoneMap.get("country"); // 国家代码,如“86”

String phone = (String) phoneMap.get("phone"); // 手机号码,如“13800138000”

// TODO 利用国家代码和手机号码进行后续的操作

} else{

// TODO 处理错误的结果

}

}

});

page.show(context);

}

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 phoneMap = (HashMap) data;

String country = (String) phoneMap.get("country"); // 国家代码,如“86”

String phone = (String) phoneMap.get("phone"); // 手机号码,如“13800138000”

// TODO 利用国家代码和手机号码进行后续的操作

} else{

// TODO 处理错误的结果

}

}

});

page.show(context);

}

2-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);

}

// 在尝试读取通信录时以弹窗提示用户(可选功能)

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);

}

注:无GUI接口文档点击这里查看详情

 

三、混淆设置

SMSSDK已经做了混淆处理,再次混淆会导致不可预期的错误,请在您的混淆脚本中添加如下的配置,跳过对SMSSDK的混淆操作:

1 -keep class com.mob.**{*;}

2 -keep class cn.smssdk.**{*;}

3 -dontwarn com.mob.**

4 -keep class com.mob.**{*;}

5 -keep class cn.smssdk.**{*;}

6 -dontwarn com.mob.**

四、注意事项

1. SMSSDK默认会添加一套开源的GUI库,如果您不需要这个库,可以在SMSSDK下设置“gui false”来关闭它

2. MobSDK默认为SMSSDK提供最新版本的集成,如果您想锁定某个版本,可以在SMSSDK下设置“version “某个版本””来固定使用这个版本

3. 如果使用MobSDK的模块会被其它模块依赖,请确保依赖它的模块也引入MobSDK插件,或在此模块的gradle中添加:

1 repositories {

2 jcenter()

3 }