手机号注册登录如今已经是大多数APP必备的功能,通过验证码的核实,我们获取了用户的手机号码,从而在以下几个方面确保安全和产生价值:

  1. 符合国家信息安全监管的需要,避免个别的用户违反监管要求,而我们无法追踪到源头。
  2. 符合产品运营的需要,有了用户的手机号码,我们才能更好的开展运营和营销活动,构建我们产品的私域流量。

说了那么多,我们应该如何在短时间内开发手机号码注册登录的功能呢?

先看看程序要实现的最终效果:

一、相关工具

Android Studio Flamingo 2022.2.1版

二、获取短信通道服务商

国内的短信验证码通道服务商有很多,但很多通道商要么技术实力弱,直接丢一个http文档给你,发起的请求还是ip地址的形式,要么采用混合通道,发下去的短信迟迟收不到,要么没有技术客服保持及时联系,有问题也很难找到对接人。

我这里选用的是Bmob后端云作为我们的短信通道服务商,这是一家老牌的云服务提供商,稳定可靠。

到Bmob后端云官网,注册登录之后,创建应用,再在这个应用下,添加自定义模板。

点击保存按钮,等待官方审核。上班时间内,速度都非常快。

同时,点击设置按钮,获取你这个应用的Application ID。

三、开发过程

一切准备就绪,我们可以正式开始开发了。

  • 创建Android 项目

我这里选择的是Java语言作为项目语言。

创建App类

这个App类继承自Application 类,里面的代码也非常简单,就是把Application ID替换你刚刚获取到的那个。

public class App extends Application {@Overridepublic void onCreate() {super.onCreate();Bmob.initialize(this,"Your Application ID");}
}
  • 修改AndroidManifest.xml文件

在Application节点的同一级新增权限如下:

<!--允许联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息  -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许读取手机状态 用于创建BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
  • 给application节点新增android:name,把这个值改为刚刚创建的App类的名字,如下:
<applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Bmobandroiddemosms"tools:targetApi="31"android:name=".App">
  • 在application节点内新增provider,如下:
<providerandroid:name="cn.bmob.v3.util.BmobContentProvider"android:authorities="这个改为你的App包名.BmobContentProvider">
</provider>
  • 发送短信验证码

做好了上面这些之后,你就可以正式在你的业务逻辑中接入短信验证码了。代码如下:

BmobSMS.requestSMSCode(phone, "你刚刚填写的短信模板名称", new QueryListener<Integer>() {@Overridepublic void done(Integer smsId, BmobException e) {if (e == null) {mTvInfo.append("发送验证码成功,短信ID:" + smsId + "\n");} else {mTvInfo.append("发送验证码失败:" + e.getErrorCode() + "-" + e.getMessage() + "\n");}}
});

其中,phone是用户端输入的手机号码。

  • 验证短信验证码

验证短信验证码的代码也非常简单,只有下面短短几行。

BmobSMS.verifySmsCode(phone, code, new UpdateListener() {@Overridepublic void done(BmobException e) {if (e == null) {mTvInfo.append("验证码验证成功,您可以在此时进行重要操作!\n");} else {mTvInfo.append("验证码验证失败:" + e.getErrorCode() + "-" + e.getMessage() + "\n");}}
});

其中,phone是用户输入的手机号码,code是用户收到的验证码。

四、源码获取

需要的用户可直接联系本人获取源码,欢迎交流如何更快开发App。

三分钟快速开发手机号注册登录功能相关推荐

  1. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:     第一:可以兼容各终端,特别是手机端.     第二:到时会用到大量html5,炫啊.     第三:导入博客园的精华文章,并做分类.(不要封我)     ...

  2. 手机短信验证码一键注册登录功能开发 2

    1. 上一篇我们开发好了 短信验证码的发送功能, 接下来开发 我们的 一键登录注册功能 2. 有前端的视图我们可以看到, 传入的参数为手机号和验证码,我们用BO对其进行统一的封装,同时使用valid ...

  3. mongodb 输出数组字段_三分钟 mongodb 开发快速上手

    三分钟 mongodb 开发快速上手 小熊昨天晚上做了一个非常真实的噩梦,有读者朋友催我"怎么又没有发文!让我们等的好辛苦",今天一睁开眼眼看后台留言,特么,居然是真的! 我bil ...

  4. 云小课 | 一个三分钟快速定制OCR应用的神器,要不?

    摘要:ModelArts Pro提供了文字识别套件,基于丰富的文字识别算法和行业知识积累,帮助客户快速构建满足不同业务场景需求的文字识别服务.三分钟即可快速定制OCR服务,实现多种版式图像的文字信息结 ...

  5. JavaWeb实现注册登录功能并将用户数据写进数据库(商城系统第一部分)

    JavaWeb实现注册登录功能并将用户数据写进数据库(商城系统第一部分) 声明:本人并非项目原创,该商城系统原创来自撩课高新强老师:https://study.163.com/course/intro ...

  6. 01: 实现注册登录功能

    目录:抽屉项目之js最佳实践 01: 实现注册登录功能 02: 实现发布帖子功能 03: 将帖子展示到页面.点赞 04: 层级评论 目录: 1.1 显示.隐藏 "登录/注册" 菜单 ...

  7. 8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能

    现在网站基本都用手机注册,很少用邮箱注册,本篇内容比较多,代码我会尽量加备注,有些操作需要连续添加几个文件才不报错,如果VS显示错误,请继续后续步骤. 前面已经有一篇文章讲到集成短信发送模块:http ...

  8. java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理

    1.工厂模式 23种java设计模式之一 1)提供抽象类(基类) 2)提供一些子类,完成方法重写 3)提供一个接口:完成具体子类的实例化对象的创建,不能直接new子类,构造函数私有化. 优点:具体的子 ...

  9. 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

    概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...

最新文章

  1. [leetcode-412-Fizz Buzz]
  2. MySQL数据库:drop、truncate、delete的区别
  3. Fraction+mysql_MySQL 数据类型总结
  4. Eureka深入理解
  5. Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】
  6. MapReduce的方式进行HBase向HDFS导入和导出
  7. P3250 [HNOI2016]网络(利用堆建线段树 + 树剖)
  8. 用户生命周期常用指标_生命周期管理工具如何使用指标
  9. 【Angular 4】数据绑定
  10. 仓库货位卡标识牌_仓库应如何规划?
  11. Tomcat部署记事
  12. IP Helper API 简介
  13. 传统武术家为什么看起来厉害?谈实战的重要性
  14. WDM驱动和NT式驱动
  15. 内存核心频率、工作频率,等效频率、总线频率
  16. 如何在HTML添加背景图片么,如何在HTML中添加背景图片
  17. 解决:mmc0: error -110 whilst initialising SD card.md
  18. 引入jq库,却不起效,底线解决方法
  19. 【物联网毕设基础】单片机:RS485 通信与 Modbus 协议
  20. 设计模式学习笔记-2 创建者模式-工厂方法模式

热门文章

  1. linux图片添加滤镜,在 Ubuntu 中给你的照片加上 Instagram 风格的滤镜程序
  2. html 中head显示 在标题栏里面的图片
  3. DISKPART——Windows NT磁盘分区工具
  4. windows解决0x80070035找不到网络路径--最牛的解决办法
  5. python千位分隔符_python 千位分隔符,
  6. 那些年,程序员开发过的好玩的程序
  7. spock测试框架使用指北
  8. Python扫码登录保存和验证cookies值——微博篇(五)
  9. SpringMVC教程(三)
  10. 与运算(),或运算(|)、异或运算()