最近一直在研究如何给app更多实用性的功能,在app进行登录或者注册时,为了方便用户更加快捷的完成登录功能,所以就决定采用短信验证码的方式进行验证登录。在学习的过程中,先使用了Mob的短信服务进行短信验证,因为他是免费的,而且不需要提交什么材料(单纯为了测试),后期加入到项目中的话,还是需要去创建自己的签名和短信模板,先拿Mob练练手,后期在项目中还是会使用阿里云的短信服务,到时候实现了之后也会分享出来。

因为我这里只是做了一个简单的Demo,所以就没有必要去申请这些权限,其实申请的话很容易过的,只要上传一下公司的营业执照就好。好了,废话不多说了,实现功能吧!

需要先在Mob上有一个自己的账号,用自己的常用邮箱注册就好,然后进入到后台,创建一个自己的应用,随便取个名字就可以创建成功,创建成功后就可以拿到Appkey及Appsecret,这两个数据后面是需要用到的,有了这个就可以非常方便的看到后台的统计信息,然后再Mob官网上下载SMSSDK,因为都是开源项目,所以Mob的代码都是托管在git上的,然后将里面的Unity包导入到项目中。我新建了一个工程来实现该功能,利用UGUI搭建了一个简易的收发验证码的界面。接下来就是开始码代码了,新建一个测试脚本,并且继承且实现SMSSDKHandler接口,为了方便接收验证码发送的回调结果。先申明SMSSDK变量,然后在Start中初始化,将先前创建的Appkey及App secret填入,第三个参数为是否warn,根据官网建议设置为false。

ssdk.init("292449f735890", "f1bee8045aac2e6cbb7c535a5277aa1c", false);
ssdk.setHandler(this);

接下来是实现短信验证码功能,特别需要注意的是第四个参数,它表示的短信模板,因为我们一开始是没有申请到短信模板的,因为Mob需要我们的应用中先利用他们sdk实现了短信验证码功能,提交的app才能通过审核。所以此时我们是没有短信模板的,所以这里在测试的时候传null就好了。

ssdk.getCode(CodeType.TextCode, phone, "86", null);

然后点击发送按钮后,就可以接收到短信了,接下来就是验证验证码是否正确了。phoneNumber表示的是手机号,codeNumer表示的是输入的验证码,点击验证后,就会自动验证了。

ssdk.commitCode("phoneNumber", "86", "codeNumber");

前面因为我们实现了SMSSDKHandler接口,所以在onComplete方法中返回验证成功,在onError方法中返回验证失败。

public void onComplete(int action, object resp){ActionType act = (ActionType)action;if (resp != null){//result = resp.ToString();text.text += "\n" + resp.ToString();Debug.Log(resp.ToString());}if (act == ActionType.GetCode){text.text += "\n 验证成功!!!";string responseString = (string)resp;Debug.Log("isSmart :" + responseString);}}public void onError(int action, object resp){Debug.Log("Error :" + resp);text.text += "\n 验证失败!!!";text.text += "\n Error : " + resp;print("OnError ******resp" + resp);}

以下是我的完整代码。

public class Test : MonoBehaviour, SMSSDKHandler
{public SMSSDK ssdk;private InputField code;private InputField phoneNum;private Button enter;private Button send;private string codeNum;private string phone;private Text timer;private bool isSend;private int time;private float t;public Text text;private void Start(){ssdk.init("292449f735890", "f1bee8045aac2e6cbb7c535a5277aa1c", false);ssdk.setHandler(this);timer = transform.Find("Timer").GetComponent<Text>();code = transform.Find("code").GetComponent<InputField>();phoneNum = transform.Find("num").GetComponent<InputField>();enter = transform.Find("enter").GetComponent<Button>();send = transform.Find("send").GetComponent<Button>();timer.gameObject.SetActive(false);enter.onClick.AddListener(EnterCodeHandler);send.onClick.AddListener(SendCodeHandler);}private void Update(){if (isSend){//倒计时timer.text = time.ToString();t += Time.deltaTime;if (t >= 1){time--;t = 0;}if (time < 0){isSend = false;send.gameObject.SetActive(true);timer.gameObject.SetActive(false);}}}/// <summary>/// 发送验证码/// </summary>private void SendCodeHandler(){phone = phoneNum.text;isSend = true;time = 60;send.gameObject.SetActive(false);timer.gameObject.SetActive(true);ssdk.getCode(CodeType.TextCode, phone, "86", null);}/// <summary>/// 点击确定,对比验证码/// </summary>private void EnterCodeHandler(){ssdk.commitCode(phone, "86", code.text);}public void onComplete(int action, object resp){ActionType act = (ActionType)action;if (resp != null){//result = resp.ToString();text.text += "\n" + resp.ToString();Debug.Log(resp.ToString());}if (act == ActionType.GetCode){text.text += "\n 验证成功!!!";string responseString = (string)resp;Debug.Log("isSmart :" + responseString);}}public void onError(int action, object resp){Debug.Log("Error :" + resp);text.text += "\n 验证失败!!!";text.text += "\n Error : " + resp;print("OnError ******resp" + resp);}
}

通过上面的实现,我们现在就基本实现了短信验证功能,但是因为Mob是免费的,所以对每个手机号都有限制,好像是对每一个手机号都只能验证一次,所以很不方便。接下来我打算利用阿里云的短信服务实现一个,到时候也会分享出来,这个项目的源码及我发布的一个测试版本都放在了我的https://github.com/Iamdevelope/SMSSDemo上了,有兴趣的可以下载下来看看。

Unity利用SMSSDK实现短信验证码(附源代码)相关推荐

  1. Mob平台Smssdk获取短信验证码

    短信验证码可以说是现在app中必备的功能,当然开发过程也很简单,各种各样的短信平台服务也很多,这里我用的是Mob平台的短信验证码服务.http://www.mob.com,注册登录,点击右上角头像,进 ...

  2. 利用JS实现短信验证码倒计时案例

    本章教程利用JS实现发送短信倒计时案例,这个需求在实际开发过程很常见. 目录 一.程序代码 二.预览展示 一.程序代码 <!DOCTYPE html> <html lang=&quo ...

  3. 利用阿里云短信验证码登录

    这段时间准备做一个电商网站的小项目,在登录这方面,我想跟现在主流的登录想做成相似的功能,比如利用手机验证码登录,或者是扫描二维码登录,然后就在就在网站找了点资料今天来分享下,一来是给自己做个笔记,以后 ...

  4. Java利用Redis实现短信验证码功能

    本文将详情介绍从Redis+阿里云注册短信服务到后端调用等过程. 这个功能比较实用的地方就是注册用户的时候,防止一个用户多个账户注册,因为手机号毕竟有限 短信服务 首先,打开你的阿里云 话不多说,第一 ...

  5. Android-Studio 用ShareSDK集成社会化分享,短信验证码,视频录制功能

    ShareSDK主要用于qq.qq空间.微信.微信朋友圈的分享功能以及第三方登录功能 SMSSDK主要用于短信验证码 集成工作:将sharesdk与smssdk同时集成到android-studio项 ...

  6. JAVA实现利用第三方平台发送短信验证码

    前段时间自己做的一个小项目中,涉及到用短信验证码登录.注册的问题,之前没涉及过这一块,看了别人的博客其实也是似懂非懂的,现在就将自己做的利用第三方短信平台来发送验证码这个功能记下来. 本文以注册为例, ...

  7. JAVA利用第三方平台发送短信验证码

    本文以注册为例,在SpringMVC+Spring+Mybatis框架的基础上完成该短信验证码功能. 发送短信验证码的原理是:随机生成一个6位数字,将该6位数字保存到session当中,客户端通过se ...

  8. python实现第三方验证码获取_python利用第三方模块,发送短信验证码(测试案例)...

    今天学到个利用python第三方,发送短信验证码的代码,速实现一遍,短信立即收到,果断记录在案! 环境:虚拟机上centos7平台,python2.7版本: 第三方服务提供商是:云通讯官网:www.y ...

  9. python发短信验证码_python利用第三方模块,发送短信验证码

    对于初学者,如何利用第三方python开发包发送短信验证码,下面是具体的实现和记录过程! 环境:虚拟机上centos7平台,python3.7版本: 首先,申请账号的部分就省略了 1. 获得appid ...

  10. 自动化软件测试 - 利用短信转发器结合Selenium读取短信验证码

        上一篇博客介绍了怎样通过 Android Studio 开发 App 自动拦截读取短信验证码,今天将介绍另外一种非开发App 的方法去实现,通过利用第三方工具短信转发器 结合 Selenium ...

最新文章

  1. 解决配置Ubuntu中vnc远程显示灰屏
  2. 前端学习(1892)vue之电商管理系统电商系统之为表格添加索引列
  3. 前端学习(1286):node运行环境安装失败
  4. 巴菲特发布2022年致股东公开信:盛赞苹果CEO
  5. Android 来电归属地显示功能demo
  6. 作业四: 结对编程项目---四则运算
  7. java设计模式在java中的应用
  8. BZOJ 4698: Sdoi2008 Sandy的卡片
  9. 技能大赛训练题:交换机虚拟化练习
  10. 雷军,扎克伯格,乔布斯等巨佬的办公桌
  11. linux调时区北京,Linux修改系统时间和中国时区
  12. android 系统时间不准确,小米手机时间不准确怎么调小米手机时间不准确怎样调...
  13. 联想 thinkpad usb 移动硬盘 u盘 BIOS 启动 ubuntu 系统
  14. 写给新的一年(2015)
  15. 无锁编程与分布式编程那个更适合多核CPU?
  16. 工业相机(高速相机)与普通相机的差别
  17. 程序员睡前发「73 76 79 86 85」,女孩熬夜破解发现竟是表白密码!
  18. 20150311,微软3月11日发布14个安全补丁
  19. 锤子发布会的那些梗-2016年10月18号
  20. 唐骏:身价10亿不买房 每月12万住宾馆

热门文章

  1. MEMS传感器的下一轮技术变革
  2. 案例|工业物联网解决方案·光伏电站
  3. 穷学生自白:爱情如此奢侈 穷孩子哪有爱的能力
  4. SpringBoot+Vue本地实现微信公总号web端的微信登录获取用户信息,前后端分离
  5. CommonAPI 使用说明文档
  6. 433MHz自发电无线控制器
  7. 转载,点评:使用开源软件设计、开发和部署协作型 Web 站点
  8. 《华为你学不会》读书笔记
  9. c#语言输出字符串长度,C#获取字符串长度(string.Length)
  10. H5(html5)入门教程