目录


  1. mob简单介绍
  2. 前期准备
    • 2.1注册登录
    • 2.2创建应用
    • 2.3下载sdk
    • 2.4引入sdK
  3. 调用有界面接口
    • 3.1效果图
    • 3.2配置AndroidManifest.xml
    • 3.3添加代码
  4. 调用无界面接口
    • 4.1效果图
    • 4.2操作步骤
  5. 监听器(回调接口)
  6. 智能短信验证
    • 6.1使用智能验证
  7. 服务器短信服务
    • 7.1接口使用
  8. 错误码参考
    • 8.1本地错误码
    • 8.2服务器错误码
  9. 附加
    • 9.1权限修改
    • 9.2mob规则
  10. demo下载地址

正文


1.mob简单介绍

基本上很多验证都需要用到短信服务,注册登录时或有消息通知时需要对用户进行验证,这时会向用户发送一条短信。Mob是一个移动开发者服务平台,他可以为我们提供第三方的短信服务功能。开发者可以通过官网,注册登录并创建应用项目,获取对应的Key,以及 Secret,就可以使用官方短信SDK。
个人觉得Mob最大的优势在于,提供数据统计,对于应用分析是一个很好的数据参考。

2. 前期准备

正如前面所说,要想使用Mob第三方短信验证服务,开发者需要通过官网,注册登录并创建应用项目,获取对应的Key,以及 Secret,就可以使用官方短信SDK。

2.1注册登录

进入官网,在右上角进行注册并登录

2.2创建应用

2.2.1
登录成功后,进入后台

2.2.2
启用短信应用SDK

2.2.3
添写应用信息,短信信息中会附有应用名称

2.2.4
得到key值以及secret

2.3下载sdk

2.3.1
可以通过官网导航栏进入短信SDK界面

也可以直接通过该链接:
http://download.csdn.net/download/abrazen_zz/9644555 进行下载
2.3.2
选择IDE版本

2.4引入sdk

这里只讲解Android Studio导入方式
2.4.1
打开下载好的SDK,在SMSSDK下,将以下标出的四个文件导入到项目app的libs目录下(如果没有libs文件夹可以直接新建)。
SMSSDK目录如下:

2.4.2
在build.gradle下,加上蓝圈中的这几句。
项目结构:

3.调用有界面接口

3.1效果图

考虑到等待时间较长,这里省略输入手机号码界面,短信发至另外部手机,效果如下:

3.2配置AndroidManifest.xml

3.2.1
添加如下的权限:

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

3.2.2
在application标签下添加跳转界面的Activity配置:

<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"/>

3.3添加代码

在你要跳转到短信页面时,按顺序加入以下步骤的代码
3.3.1
启动时初始化

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

3.3.2
发送短信验证码
短信SDK内置了开源的GUI功能,您可以通过调用下面的代码打开短信验证页面:

        //创建注册页面RegisterPage registerPage = new RegisterPage();//显示界面registerPage.show(MainActivity.this);//回调函数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");Toast.makeText(MainActivity.this, "验证成功", Toast.LENGTH_SHORT).show();// 提交用户信息(此方法可以不调用)//registerUser(country, phone);}}});

只要初始化并显示短信验证界面,剩下的SDK都封装好了。我们也可以监听短信验证的每个步骤,如请求获取验证短信,验证成功,验证失败等等。
这里使用setRegisterCallback()为短信添加一个EventHandler监听方法,result == SMSSDK.RESULT_COMPLETE即验证码验证成功后的监听。
具体关于短信验证的回调函数在下面有做分析,在这里只是简单的参考。

4.调用无界面接口

4.1效果图

这里是我自己制作的页面,点击验证按钮就会调用官方提供接口上传手机号码,从而请求下发短信。效果如下:

4.2操作步骤

4.2.1
同理,这里需要在AndroidManifest.xml中添加权限,因为不需要调用界面,所以不需要配置< activity>< /activity>.
4.2.2
在点击事件,添加如下代码:

  Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if (msg.what == 1)Toast.makeText(mActivity, "回调完成", Toast.LENGTH_SHORT).show();else if (msg.what == 2)Toast.makeText(mActivity, "提交验证码成功", Toast.LENGTH_SHORT).show();else if (msg.what == 3)Toast.makeText(mActivity, "获取验证码成功", Toast.LENGTH_SHORT).show();else if (msg.what == 4)Toast.makeText(mActivity, "返回支持发送国家验证码", Toast.LENGTH_SHORT).show();}};//回调函数EventHandler eh = new EventHandler() {@Overridepublic void afterEvent(int event, int result, Object data) {if (result == SMSSDK.RESULT_COMPLETE) {handler.sendEmptyMessage(1);//回调完成if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {//提交验证码成功handler.sendEmptyMessage(2);} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {//获取验证码成功handler.sendEmptyMessage(3);} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {//返回支持发送验证码的国家列表handler.sendEmptyMessage(4);}} else {((Throwable) data).printStackTrace();}}};SMSSDK.initSDK(this, "您的appkey", "您的appsecret");//初始化SMSSDK.registerEventHandler(eh); //注册短信回调SMSSDK.getVerificationCode("86", phone);//请求获取短信验证码

这里使用registerEventHandler()方法为短信验证增加一个EventHandler的监听对象。
其次,这里只是请求下发短信到手机。并未进行判断验证码是否准确。
可以通过
submitVerificationCode(String country, String phone, String code)
对短信进行验证。请求成功与否,验证成功与否会调用回调函数EventHandler。

5. 监听器(回调接口)

其中的EventHandler即为操作回调。它包括4个方法,分别为:

  • public void onRegister(); //注册监听时被触发
  • public void beforeEvent(int event, Object);//操作执行前被触发
  • public void afterEvent(int event, int result, Object data);//操作结束时被触发(即相当于输入手机号码并点击了验证)
  • public void onUnregister();//解除监听时被触发

其中要注意的是:afterEvent在操作结束时被触发,event表示操作的类型但是,data表示事件操作结果,其具体取值根据参数result而定。result是操作结果,为SMSSDK.RESULT_COMPLETE表示操作成功,为SMSSDK.RESULT_ERROR表示操作失败。

当result=SMSSDK.RESULT_COMPLETE时

先判断result,再判断event,之后直接将data强壮成对应的类型即可。

短信SDK采用“广播”的方式发送操作结果。每次调用registerEventHandler都会设置创建新的EventHandler。
为了避免EventHandler注册后不再使用而造成内存泄漏,请务必在确定不使用某个EventHandler时,需要解除注册,方法如下:

SMSSDK.unregisterEventHandler(EventHandler);

在EventHandler的4个回调方法都可能不在UI线程下,因此如果要在其中执行UI操作,请务必使用Handler发送一个消息给UI线程处理。

当result=SMSSDK.RESULT_ERROR时

值得一提的是,如果返回错误,即:result=SMSSDK.RESULT_ERROR,开发者可用获取错误信息,并进行相应的操作。

try {Throwable throwable = (Throwable) data;throwable.printStackTrace();//打印错误信息JSONObject object = new JSONObject(throwable.getMessage());String des = object.optString("detail");//错误描述int status = object.optInt("status");//错误代码if (status > 0 && !TextUtils.isEmpty(des)) {//输出信息Toast.makeText(activity, des, Toast.LENGTH_SHORT).show();return;}
} catch (Exception e) {//do something
}

返回的json数据包含错误码,开发者可以对照第八点错误码参考。就能知道错误码所对应的错误。

6. 智能短信验证

从Android 1.3.1版本开始,我们新增了智能验证功能。智能验证是指您的手机号最近一次已经在Mob平台的SMSSDK验证过。此时就不再下发短信到该手机上,直接通过验证。当用户手机未通过智能验证时,则依然需要下发短信/语音验证码的方式验证手机号的有效性。
如果你不想使用此功能,可以在短信的后台关闭,默认是打开。

6.1使用智能验证

智能验证依然在获取短信验证的api(SMSSDK.getVerificationCode)里,只是操作回调中,需要判断一下。当result=SMSSDK.RESULT_COMPLETE,则data的类型为Boolean,你需要判断一下,如果为true,便是智能验证。
调用代码如下:

if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {if(result == SMSSDK.RESULT_COMPLETE) {boolean smart = (Boolean)data;if(smart) {//通过智能验证} else {//依然走短信验证}}
}

7. 服务器短信服务

之前,短信验证码正确与否是在客户端调用submitVerificationCode(String country, String phone, String code);进行判断。
Mob提供服务器短信服务,即在验证码正确与否由自己的服务器调用相应的代码进行判断。这样,客户端只需要将获取到的短信验证码提交到自己的服务器。再由自己的服务器向短信验证的服务器去判定。

7.1接口使用

第一步:开通服务端验证开关

免费短信验证码SDK/应用管理/短信设置 , 把服务端验证接口开关开启

第二步:请求接口验证短信

请求地址为:https://webapi.sms.mob.com/sms/verify
请求方式: POST
请求参数

返回结果
{status:200}

8. 错误码参考

8.1本地错误码:

8.2服务器错误码:




如下,这是验证码输入错误Android studio 报的错误..

有了状态码,就能知道到底是本地发生错误还是服务器,具体是什么错误。

9. 附加

9.1权限修改

9.1.1
SMSSDK中用到的权限
普通组:
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.INTERNET
android.permission.GET_TASKS
谨慎组:
android.permission.READ_PHONE_STATE
android.permission.RECEIVE_SMS
android.permission.READ_SMS
android.permission.READ_CONTACTS
android.permission.WRITE_EXTERNAL_STORAGE
这些权限一般在Manifest文件中按需加入

9.1.2
6.0权限
因为6.0权限授权的改变,即使你在Manifest中加入,有些权限依然需要获得用户的手动授权。由于手动授权在SDK中不好做,
它会中断SDK的初始化,因此需要开发者自己实现权限授权。
上面普通组中的只需在manifest文件中加入即可。谨慎组中的需要额外授权。
如果你需要智能验证,请授权READ_PHONE_STATE,READ_SMS。
如果你需要通讯录功能,请授权READ_CONTACT。
如果你需要读取SD卡,请授权WRITE_EXTERNAL_STORAGE
如果用到UI库中的自动读取验证码,请授权RECEIVE_SMS
具体授权过程请参考官方教材:
http://developer.android.com/training/permissions/index.html

9.2mob规则

mob规则是指,对短信数量及各方面做了限制。
具体参考该链接: http://wiki.mob.com/smssdk2-x-x%E9%BB%98%E8%AE%A4%E8%A7%84%E5%88%99/

10. demo下载地址:具体等明天上传后再附上链接

10.1调用有界面接口

下载链接:http://download.csdn.net/download/abrazen_zz/9644646

10.2调用无界面接口

下载链接:

11. 参考链接

官方文档:http://wiki.mob.com/android-%E7%9F%AD%E4%BF%A1sdk%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3/
原文链接:http://blog.csdn.net/Abrazen_zz/article/details/52721884

Android之Mob第三方短信验证服务相关推荐

  1. Android实战简易教程-第三十九枪(第三方短信验证平台Mob和验证码自动填入功能结合实例)

    用户注册或者找回密码时一般会用到短信验证功能,这里我们使用第三方的短信平台进行验证实例. 我们用到第三方短信验证平台是Mob,地址为:http://mob.com/ 一.注册用户.获取SDK 大家可以 ...

  2. 第三方短信平台服务提供商是什么?

    随着企业对海量短信需求的不断增加,第三方短信平台在市场上的扩散越来越多,层出不穷的平台让企业眼花缭乱.面对如此复杂的市场,企业应该如何选择?今天的国际短信360ald回答这里,如何选择第三方短信平台服 ...

  3. 阿里云短信验证服务详细基础教程

    阿里云短信验证服务 1. 注册一个阿里云的帐号 2. 在搜索栏搜索短信服务 3. 点击免费开通 4.开通之后点击管理控制台 5. 获取AccessKey 6. 创建AccessKey并保存,后面会用到 ...

  4. 手机短信验证服务,为个人信息安全提供保障

    近年来,随着科技的不断创新与进步,电子商务网站已经成为了人们日常生活中不可缺少的一部分.与传统商务模式相比,电子商务的确有着其无可比拟的巨大优势,随着电子商务的不断兴盛,也衍生了许许多多的新兴服务产业 ...

  5. Springboot+redis+榛子云短信验证服务进行登录

    Springboot+redis+榛子云短信验证服务进行登录 前言 最近在做尚医通的医院预约挂号管理系统时,做到了使用阿里云的短信验证服务,但是现在阿里云的短信验证服务审核听说非常严格,主要是我没有专 ...

  6. MobTech SMSSDK|短信验证服务

    短信验证服务可以帮助开发者实现用户注册.登录.支付.安全校验等场景的短信验证功能.市面上常见的短信验证服务商有: MobTech:全球领先的移动开发者服务平台,提供SMSSDK,一款专业免费的短信验证 ...

  7. 第53章 短信验证服务和登录的前端定义实现

    1 向src\router\index.js添加定义 { path: '/LoginSms', name: '手机号登录', component: () => import('../views/ ...

  8. Android Studio使用Mob实现短信验证功能遇到的问题解决

    一.Mob短信验证 全球领先的数据智能科技平台-MobTech袤博解决 进行注册登入 登入成功后,点击开发者服务中的短信验证,来到开发者平台 填好信息创建成功就是下图,可以看到对应信息如下(AppKe ...

  9. Android Studio基于mob的短信验证

    Android Studio 基于mob平台提供的SMSSDK实现注册后绑定手机号的学习笔记 将mob提供的SMSSDK导入到AS中 首先在mob官网中注册自己的账号,申请一个app,获得APP Ke ...

最新文章

  1. bugku 杂项 就五层你能解开吗_你能解开这个和数字有关的逻辑解谜游戏吗? | 每日一考...
  2. Zeppelin:用于区块链应用的开源安全智能合约架构
  3. css 中 border 断线解决,简单实用
  4. mac安全与隐私只有两个选项,少了一个任何来源
  5. 搭建于 Cubieboard 之上的超小型实时监控平台 - mjpg篇
  6. 淘淘商城之技术选型、开发工具和环境、人员配置
  7. 舵机任意角度程序_【舵机初动】基于Mind+ Ardunio入门教程10
  8. 密实逃脱1深红色房间攻略
  9. 华三 h3c STP生成树保护配置
  10. 学习——java内存模型
  11. 几种不同程序语言的HMM版本
  12. python函数的规则_Python函数的作用域规则和闭包
  13. ruby array 额
  14. linux uvc协议_linux 使用 uvc 摄像头
  15. Win10 1709系统更新后卡顿:Killer 无线网卡1525驱动不兼容导致
  16. java使用反射生成JDK动态代理
  17. 记-玩吧-一次失败的面试
  18. HIVE 总体标准差stddev()
  19. chmod 777命令_实用的linux 命令(上)
  20. Comet OJ 夏季欢乐赛 完全k叉树

热门文章

  1. html字体插件,20款jQuery CSS文字特效插件(有图有真相)
  2. 部署Openstack-train版
  3. Android 自定义图片点击放大、缩小
  4. (iOS)仿App第一步:获取App素材
  5. ThreadPoolExecutor线程池及参数介绍
  6. View 事件分发机制
  7. 同步上下文(SynchronizationContext) 和 C#中跨线程更新UI的方法总结
  8. excel怎么删除换行符
  9. 关于几个箭头符号含义的介绍
  10. 人工智能导论(2)——启发式算法(八数码问题)