手机号注册登录如今已经是大多数APP必备的功能,通过验证码的核实,我们获取了用户的手机号码,从而在以下几个方面确保安全和产生价值:
- 符合国家信息安全监管的需要,避免个别的用户违反监管要求,而我们无法追踪到源头。
- 符合产品运营的需要,有了用户的手机号码,我们才能更好的开展运营和营销活动,构建我们产品的私域流量。
说了那么多,我们应该如何在短时间内开发手机号码注册登录的功能呢?
先看看程序要实现的最终效果:
一、相关工具
Android Studio Flamingo 2022.2.1版
二、获取短信通道服务商
国内的短信验证码通道服务商有很多,但很多通道商要么技术实力弱,直接丢一个http文档给你,发起的请求还是ip地址的形式,要么采用混合通道,发下去的短信迟迟收不到,要么没有技术客服保持及时联系,有问题也很难找到对接人。
我这里选用的是Bmob后端云作为我们的短信通道服务商,这是一家老牌的云服务提供商,稳定可靠。
到Bmob后端云官网,注册登录之后,创建应用,再在这个应用下,添加自定义模板。
点击保存按钮,等待官方审核。上班时间内,速度都非常快。
同时,点击设置按钮,获取你这个应用的Application ID。
三、开发过程
一切准备就绪,我们可以正式开始开发了。
- 创建Android 项目
我这里选择的是Java语言作为项目语言。
创建App类
这个App类继承自Application 类,里面的代码也非常简单,就是把Application ID替换你刚刚获取到的那个。
public class App extends Application {
@Override
public 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类的名字,如下:
<application
android: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,如下:
<provider
android:name="cn.bmob.v3.util.BmobContentProvider"
android:authorities="这个改为你的App包名.BmobContentProvider">
</provider>
- 发送短信验证码
做好了上面这些之后,你就可以正式在你的业务逻辑中接入短信验证码了。代码如下:
BmobSMS.requestSMSCode(phone, "你刚刚填写的短信模板名称", new QueryListener<Integer>() {
@Override
public 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() {
@Override
public void done(BmobException e) {
if (e == null) {
mTvInfo.append("验证码验证成功,您可以在此时进行重要操作!\n");
} else {
mTvInfo.append("验证码验证失败:" + e.getErrorCode() + "-" + e.getMessage() + "\n");
}
}
});
其中,phone是用户输入的手机号码,code是用户收到的验证码。
四、源码获取
需要的用户可直接联系本人获取源码,欢迎交流如何更快开发App。