本博客地址: http://blog.csdn.net/talentclass_ctt/article/details/51958374

这篇文章主要介绍发送验证码和校验验证码的功能,用到一个第三方平台Bmob,那Bmob是什么呢?Bmob可以开发一个云存储的移动应用软件,他提供了大量的标准的API接口,根据需要接入相关服务,开发者可以更加专注于应用的开发,让产品交付更快速,验证码功能就是其中一个。

一、跟其他第三方一样,我们开发之前要做一些准备工作。

1、首先,去官网注册一个帐号:http://www.bmob.cn/;

2、然后就可以创建应用了;具体怎么做Bmob说得很清楚了(官方操作介绍),如果你不想看,我简单说一下:点击右上角“我的控制台”,进入后点击“创建应用”,如图

然后填应用名,下面的根据需要选,如果实在不知选什么,就选最下面的其他,这样就好了,如图:

3、获取Application ID和REST API Key;点击左下角的设置,右边就有应用密钥了。

系统会帮你生成四个值,解释如下,其中Application ID是等下初始化的时候要用到的。

Application ID,SDK初始化必须用到此密钥
REST API Key,REST API请求中HTTP头部信息必须附带密钥之一
Secret Key,是SDK安全密钥,不可泄漏,在云端逻辑测试云端代码时需要用到
Master Key,超级权限Key。应用开发或调试的时候可以使用该密钥进行各种权限的操作,此密钥不可泄漏

4、创建短信验证码模版,只有审核通过之后的自定义短信模板才可以被使用,如果自定义的短信模板其状态显示审核中或者审核失败,再调用该方法则会以默认模板来发送验证码,开发者提交短信验证码模板时需注意以下几点:
1)、模板中不能有【】和 [] ,否则审核不通过;
2)、如果你提交的短信模板无法发送,则有可能包含一些敏感监控词,具体通过查阅《短信关键字监控参考文档》(我会连同源码一起发)来查看提交内容是否合法。
3)、一天一个应用给同一手机号发送的短信不能超过10条,否则会报10010错误,其他错误码可查看:短信功能相关错误码 。

支持自定义签名。注:官方签名属于独立通道,自定义签名属于共享通道,短信接收速度和稳定性会有所差异。
短信签名是指短信内容里【】 括起来的名称,签名字数为3~8个字,且不能有任何非文字字符
模板内容支持3个变量:%appname%(您填写的应用名称),%smscode% (统生成的6位验证码),%ttl%(验证码有效时间,单位为分钟)。
若无需使用到变量则不用再加“%”,直接填写实际名称即可。

我今天创建了3个审核不通过的,我就纳闷了,后来我才看到上面这几点才发现错误,像下图就是审核不通过的:

5、下载短信验证码的SDK,下载后发现里面只有一个jar包。

注意:每个 Bmob 帐户有 10 条免费额度的短信数量用于测试,超过需要购买短信条数才能继续使用。

二、接下来就开始写客户端的代码了,之前写了一片关于跨界面倒计时的文章,(链接:跨界面倒计时,再也不怕倒计时过程中Activity被销毁了)今天就用那个程序来接着完成这次的验证码,哈哈哈,我是不是很懒呢。。。。不过其实布局也很简单,关键是下面。

1、导入jar包,我前面写过一篇文章是关于Android Studio导入jar包的文章(链接:Android Studio下导入jar包(以andbase.jar为例)),这里就简单带过。将jar文件放到libs目录下,接下来右键项目,选择open module settings,然后选择APP后点击右边的dependencies,再点击右上角的加号,选择第二个File dependenc以后会弹出窗口,选择刚才的jar包,最后点OK,OK。

2、SMS初始化。

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = this;Log.e(TAG, "onStart 方法调用");// SMS初始化BmobSMS.initialize(mContext, "还记得吗?这里填刚才拿到的Application ID");init();}

3、点击按钮请求发送短信验证码。先看下布局吧:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><EditTextandroid:id="@+id/activity_main_et_phone"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="phone"android:hint="请填写手机号码"/><Buttonandroid:id="@+id/activity_main_btn_countdown"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/activity_main_et_phone"android:layout_margin="8dp"android:layout_centerHorizontal="true"android:background="@drawable/shape"android:textColor="@color/white"android:text="@string/countdown"/><EditTextandroid:id="@+id/activity_main_et"android:layout_below="@id/activity_main_btn_countdown"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入验证码"/><Buttonandroid:id="@+id/activity_main_btn_send"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="8dp"android:layout_centerHorizontal="true"android:layout_below="@id/activity_main_et"android:background="@drawable/shape"android:textColor="@color/white"android:text="@string/send"/></RelativeLayout>

给“获取验证码”按钮设置点击事件:倒计时和请求发送短信验证码

btnCountdown.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 将按钮设置为不可用状态btnCountdown.setEnabled(false);// 启动倒计时的服务startService(mIntent);// 通过requestSMSCode方式给绑定手机号的该用户发送指定短信模板的短信验证码BmobSMS.requestSMSCode(mContext, etPhone.getText().toString(), "天才", new RequestSMSCodeListener() {@Overridepublic void done(Integer smsId, BmobException ex) {if (ex == null) {//验证码发送成功Log.e("bmob", "短信id:" + smsId);//用于查询本次短信发送详情}}});}});

验证验证码

<pre name="code" class="java">btnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String number = etNumber.getText().toString();if (!TextUtils.isEmpty(number)){<span style="white-space:pre">   </span>// 通过verifySmsCode方式可验证该短信验证码BmobSMS.verifySmsCode(mContext,etPhone.getText().toString(), number, new VerifySMSCodeListener() {@Overridepublic void done(BmobException ex) {if(ex==null){//短信验证码已验证成功Log.e("bmob", "验证通过");}else{Log.e("bmob", "验证失败:code ="+ex.getErrorCode()+",msg = "+ex.getLocalizedMessage());}}});}}});
 

别忘了在AndroidManifest.xml里面添加权限:

 <!--允许联网 --><uses-permission android:name="android.permission.INTERNET" /><!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息  --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!--获取wifi网络状态的信息 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

我的例子就写到这里了,不过还有一个知识点:查询短信发送状态。我把官网的贴一下(根据自己的业务决定要不要这个功能,o(︶︿︶)o 唉,其实就是我懒,哈哈哈):

// 通过querySmsState方式可查询指定smsId的发送状态
BmobSMS.querySmsState(context, smsId, new QuerySMSStateListener() {@Overridepublic void done(SmsState state, BmobException ex) {if(ex==null){Log.i("smile","短信状态:"+state.getSmsState()+",验证状态:"+state.getVerifyState());}}
});

注:SmsState包含两种状态:
1、smsState(短信状态) :SUCCESS(发送成功)、FAIL(发送失败)、SENDING(发送中)。
2、verifyState(验证状态):true(已验证)、false(未验证)。

源代码

Android开发之用Bmob实现短信验证码功能相关推荐

  1. Android开发之属于你的短信验证码(二)

    君子欲讷于言而敏于行.-<论语> 最近身体有点不适,才注意到身体真的是最重要的,以后不管我们有多忙,一定要按时休息,坚持跑步,锻炼身体,做些颈椎的操等等,不要让我们挣的钱拿来看病,大家一起 ...

  2. iOS-使用第三方实现短信验证码功能

    目前,很多App是通过短信验证码来实现用户注册和登录功能,目前市面上绝大多数的短信SP提供商都是需要付费才能提供这种服务,价格普遍在0.07元/条左右: 建议:如果公司比较大,开发人员充足,时间充足的 ...

  3. Mob实现短信验证码功能

    1.各类第三方短信功能对比 1.一直想做一个Android短信验证码功能,但是由于业务上没有需求,还有就是短信验证码原来一直以为是收费的,就没做过,今天上网查了一下,好多第三方SDK. 网易云短信验证 ...

  4. 快速集成APP注册页面免费获取短信验证码功能

    前言: 最近这段时间都忙着优化自己的个人项目,好久没来总结分享了,今天就抽空跟大家分享一下快速集成APP注册页面免费获取短信验证码功能吧. 一.使用第三方短信SDK前期准备: 在这里我是使用了第三方免 ...

  5. laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能

    laravel 实现短信验证码功能,搜索资料发现比较流行的有两个包: 一个是laravel sms 地址  https://github.com/toplan/laravel-sms 一个是easy ...

  6. java短信验证码功能发送的验证码如何校验_java 实现发送短信验证码功能

    原标题:java 实现发送短信验证码功能 如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenz ...

  7. 实现app短信验证码功能这样做就很简单!

    现在大多数app短信验证码服务都是由第三方服务商提供的,企业不需要对接运营商就可以让app具备三网发送短信功能,现在app短信验证码使用场景很多,比如说注册.登陆.支付等场景,app短信验证码实现的原 ...

  8. java短信验证码功能发送的验证码如何校验_Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口( ...

  9. 阿里云——Java实现手机短信验证码功能

    目录 如何实现短信验证码功能 1.准备工作 1.1 注册 阿里云 账号,并完成实名认证.找到短信服务功能. 1.2 开通短信服务 1.3 签名与模板 1.4 获取AccessKey 1.5 打开短信控 ...

最新文章

  1. GraphPad Prism —— 简单又好用的生物数据统计绘图软件
  2. ubuntu 16.04 分辨率只有800×600问题解决
  3. GlusterFS配置管理(五)
  4. Varnish页面缓存服务
  5. openshift harp.js heroku react-router 4
  6. python编译为c_cython编译Python为c语言
  7. CodeSmith(9)访问数据库多个表
  8. Luogu P4916 魔力环
  9. Spring IOC源代码具体解释之容器初始化
  10. 文件上传漏洞——upload-labs(1-10)
  11. 唐尼vr眼镜好吗_科普:眼镜片有哪些种类?镜片越薄越好吗?无框眼镜配什么材质?...
  12. ASP.NET Core WebListener 服务器
  13. 【clickhouse】Clickhouse 版本号历史
  14. MongoDB副本集配置系列二:配置MongoDB副本集
  15. Liferay中页面的权限控制
  16. 留学时在海外如何解决国内手机验证码问题?
  17. linux小白家教学一
  18. java文件拒绝访问权限_运行java文件,一直显示拒绝访问,谁知道哪里出了問題≥﹏≤...
  19. draw.io二次开发改造过程
  20. IEEE协会首次在京举办研讨会,王飞跃称不存在AI芯片

热门文章

  1. 涨工资 啦 啊啊啊啊 !!
  2. Hudi Clean Policy 清理策略实现分析
  3. 昨晚上闭路电视没信号了
  4. 《六月集训》第五天——双指针
  5. 华为路由器:帧中继FR协议
  6. python的HTTP请求方式(socket)
  7. java代码课程_助你写出优雅的 Java 代码,8 点建议给你收藏
  8. 9.grep/egrep详解
  9. Android手机实现视频监控
  10. 天然大数据公司的各种套餐