mob短信验证码SMSSDK的使用

Posted Zson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mob短信验证码SMSSDK的使用相关的知识,希望对你有一定的参考价值。

首先,很多第三方短信验证码都可以,为什么我要选择mob的呢?

因为mob 的短信验证码是完全免费,完~全~免~费~,所以老大就让我用它安静

其实,个人感觉mob 的短信验证发生时间很不稳定,会延迟,而且未审核之前一个手机号一天只允许请求5次,一个mob账号一天最多发送20次。

使用起来效率可能会相对比较低,但是,它是完~全~免~费~的~~~


请求流程:

1. 以用户提供的手机号码作为参数,请求连接到SMSSDK的服务器

2. SMSSDK服务器校验号码格式成功,请求短信服务商发送短信验证码到该手机号

3. 手机终端接收到验证码,用户输入验证码

4. 验证码传入应用后台服务端,服务端通过SMSSDK接口验证,再把验证结果传回手机端

功能实现过程:

分两种,第一种是无GUI,第二种是有GUI

GUI是指,SMSSDK里面有一个接口,调用这个接口可以使用SMSSDK已经为我们写好的登录注册布局,短信验证码以及短信验证回调方法;

当不想使用SMSSDK里面提供的布局或者只是需要短信验证码时,调用第一种无GUI方法。

 

一、无GUI集成短信验证码的SMSSDK

1. 从mob官网下载短信验证码的SDKhttp://www.mob.com/#/downloadDetail/SMS/android

 

2. 把Android SMSSDK v2.0.1.zip下的jar包放到项目的libs目录下,还有其中的raw文件(包括raw文件中的so文件)拉到项目的res中。如果找不到该文件,可以修改SMSSDK-2.0.1文件的格式为rar再从中获取。

 

 

 

3. 配置AndroidManifest.Xml所需要的权限:

``` python

<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.GET_TASKS" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

```

<application>下添加activity

``` python

<activity

android:name="com.mob.tools.MobUIShell"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:windowSoftInputMode="stateHidden|adjustResize"/>

```

 

4. activity中写代码,分2步执行,一加载,二发送

 

//  appkeyappSecretmob申请的应用中获取

// 初始化SDK,单例,可以多次调用;任何方法调用前,必须先初始化

SMSSDK.initSDK(this, "您的appkey", "您的appsecret");

// 其中参数第一个代表的是国家代号,86为中国

SMSSDK.getVerificationCode("86","手机号码");

 

这样就完成一个简单请求短信验证码的功能。

服务器验证短信验证码必须先打开服务器验证的开关,否则无法进行验证。

 

 

二、有GUI接口集成调用

1. 有GUI集成大致与无GUI相同,需要在libs目录下多加一个SMSSDKGUI-2.0.1.jar

 

2. 集成权限配置(同无GUI接口一致)

3. 添加代码

``` python

//初始化

SMSSDK.initSDK(this, "您的appkey", "您的appsecret");

//调用代码打开GUI页面

//打开注册页面

RegisterPage registerPage = new RegisterPage();

registerPage.setRegisterCallback(new EventHandler() {

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

// 解析注册结果

if (result == SMSSDK.RESULT_COMPLETE) {

@SuppressWarnings("unchecked")

HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;

String country = (String) phoneMap.get("country");

String phone = (String) phoneMap.get("phone");

 

// 提交用户信息

registerUser(country, phone);

}

}

});

registerPage.show(context);

 ```

 

static void

getSupportedCountries()
获取短信目前支持的国家列表,在监听中返回

static void

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

static void

submitVerificationCode(String country, String phone, String code)
提交短信验证码,在监听中返回

 

短信SDK不能支持所有国家的短信验证,调用getSupportedCountries方法能获取到SDK可以支持的国家列表和国家代号。

请求getVerificationCode的时间间隔不应该小于60秒,否则服务端会返回“操作过于频繁”的错误。

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

 

EventHandler是短信回调接口,在使用之前必须先注册,同样,有注册就有注销。

SMSSDK.registerEventHandler(EventHandler handler)注册回调接口

SMSSDK.unregisterEventHandler(EventHandler handler)注销回调接口

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

``` python

// 短信回调代码

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.SMSSDK服务器请求短信服务商

3.短信服务商下发短信

4.手机端发送短信验证码到开发者服务器进行验证

5.开发者服务器发送到SMSSDK服务器进行验证

6.SMSSDK服务器返回开发者服务器验证结果

7.开发者服务器把验证结果返回手机端

 

 

在没有短信服务端验证接口的时候,我的服务器需要知道用户是否验证成功是这样走的

 

1. 手机端请求下发短信

2. SMSSDK服务器请求短信服务商

3. 短信服务商下发短信

4. 手机端发送短信验证码到SMSSDK服务器进行验证

5. SMSSDK服务器返回手机端验证结果

6. 手机端把验证结果返回开发者服务器

 

 

以上为个人的总结,疑问或者有不妥当之处,请指出


第一次写博客,好激动~~~得意

接下来会好好努力,坚持下去奋斗


以上是关于mob短信验证码SMSSDK的使用的主要内容,如果未能解决你的问题,请参考以下文章

Android开发 申请Mob的SMSSDK的短信验证码功能中获取MD5签名(更新中)

sharesdk短信验证码的集成

MOB 短信验证

Android开发:app工程集成mob短信验证码功能

android_app开发集成mob短信验证码功能

android_app开发集成mob短信验证码功能