您的位置:首页 > 移动开发 > Android开发

mob(sharedsdk)短信验证

2016-11-03 18:25 411 查看

第一步-下载开发包

首先你要在第三方平台mob拥有一个开发者账号,这样你才能使用其提供的短信验证服务。



然后点击下载相应开发平台的版本,我这里使用的是AS。



下载完毕后我们得到的是一个压缩包,解压缩,打开SMSSDK这个文件夹。

中间3个是sdk,最后是gui的文件

如果使用as2.0之前的版本  不识别aar文件可以在我的资源文件中下载smssdk....jar

第二步-将SDK导入到项目当中

将以下jar导入项目:

构建完成。

第三步-配置清单

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

第四步-启动SDK

初始化接口

限定符和类型方法和说明
static voidinitSDK(Context context, String appkey, String appSecrect)

初始化SDK,单例,可以多次调用;任何方法调用前,必须先初始化
static voidregisterEventHandler(EventHandler handler)

注册回调接口
static voidunregisterEventHandler(EventHandler handler)

注销回调接口
initSDK方法是短信SDK的入口,需要传递您从ShareSDK应用管理后台中注册的应用AppKeyAppSecrete,如果填写错误,后续的操作都将不能进行。
registerEventHandler用来往SMSSDK中注册一个事件接收器,SMSSDK允许开发者注册任意数量的接收器,所有接收器都会在事件 被触发时收到消息。

SMSSDK.initSDK(this,APPKEY,APPSECRET);
EventHandler eh=new EventHandler(){

@Override
public void afterEvent(int event, int result, Object data) {

if (result == SMSSDK.RESULT_COMPLETE) {
//回调完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//提交验证码成功
}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
//获取验证码成功
}else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
//返回支持发送验证码的国家列表
}
}else{
((Throwable)data).printStackTrace();
}
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

SMSSDK.initSDK(this,APPKEY,APPSECRET);

        EventHandler
eh=new
EventHandler(){
 

            @Override
            public
void afterEvent(int
event,
int result,
Object data)
{

 
              
if (result
== SMSSDK.RESULT_COMPLETE)
{

                //回调完成
                if
(event
== SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)
{

                //提交验证码成功
                }else
if (event
== SMSSDK.EVENT_GET_VERIFICATION_CODE){

                //获取验证码成功
                }else
if (event
==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){

                //返回支持发送验证码的国家列表
                }

              }else{                                                                

                
((Throwable)data).printStackTrace();

          }
      }

   };

SMSSDK.registerEventHandler(eh);
//注册短信回调

 

registerEventHandler必须和unregisterEventHandler配套使用,否则可能造成内存泄漏。

短信验证码接口

限定符和类型方法和说明
static voidgetSupportedCountries()

获取短信目前支持的国家列表,在监听中返回
static voidgetVerificationCode(String country, String phone)

getVerificationCode(String country, String phone, OnSendMessageHandler listener)

请求获取短信验证码,在监听中返回
static voidsubmitVerificationCode(String country, String phone, String code)

提交短信验证码,在监听中返回
其中OnSendMessageHandler的定义如下,这个Handler的用途是在发送短信之前,开发者自己执行一个操作,来根据电话号码判断是否需要发送短信

public interface OnSendMessageHandler {

//#if def{lang} == cn
/**
* 此方法在发送验证短信前被调用,传入参数为接收者号码
* 返回true表示此号码无须实际接收短信
*/
//#elif def{lang} == en
/**
* This method will be called before verification message being to sent,
* input params are the message receiver
* return true means this number won't actually receive the message
*/
//#endif
public boolean onSendMessage(String country, String phone);

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

public
interface OnSendMessageHandler
{

 
    //#if def{lang} == cn

    /**
     * 此方法在发送验证短信前被调用,传入参数为接收者号码

     * 返回true表示此号码无须实际接收短信
     */

    //#elif def{lang} == en
    /**

     * This method will be called before verification message being to sent,
     * input params are the message receiver

     * return true means this number won't actually receive the message
     */

    //#endif
    public
boolean onSendMessage(String
country,
String phone);

 
}

短信SDK并不能支持世界上所有国家的短信验证服务,因此我们提供了getSupportedCountries方法,在使用短信验证码功能前请调用此方法,获取当前SDK可以支持的国家列表和号码匹配规则。

getVerificationCode用于向服务器请求发送验证码的服务,需要传递国家代号和接收验证码的手机号码,支持此服务的国家代码在 getSupportedCountries中获取。请求getVerificationCode的时间间隔不应该小于60秒,否则服务端会返回“操作过 于频繁”的错误

submitVerificationCode用于向服务器提交接收到的短信验证码,验证成功后会通过EventHandler返回国家代码和电话号码。

第五步-实例

我的另一篇文章:注册界面及短信验证
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android SMSSDK