虽然mob平台可以实现手机验证码登录 ,但是有一个弊端
每天只能发送10条验证码。
建议仔细观看每一个步骤,如果一个步骤没处理好,可能就会让你的这个功能无法实现。相信我一定可以成功的。
第一步:注册mob平台账号
因为我已经注册了mob平台了,也没有多余的手机号,就不详细说明了,注册还是比较简单的。下面附上mob平台的链接:
mob平台链接:https://www.mob.com/
第二步:在mob平台配置SMSSDK环境。
1.点击下图红色圆圈处的产品中心。
2.点击立即进入。
3.点击创建应用。
4.同意隐私服务。
5.创建应用。
记得图片设置为128px*128px
如果不知道怎么设置图片大小
,可以在网上搜索一下如图FastStone编辑器,他的安装包我不知道放那里去了,可以自己去网上找一下,不过window自带的画图软件好像也可以设置大小(我也不是很不确定)。废话不多说,步入正题。
6.点击下图红色圆圈接入接口。
7.选择SMSSDK。
选择如图中的SMSSDK
(秒验这个不知道需不需要添加,我以前是添加的,不过没什么影响,加了总比没加好,反正不碍事)。
8.获取你的·App Key
和App Secret
。
建议用自己的,因为只能每一个创建的应用只能发送10条信息。
9.点击SDK下载。
如图所示
10.下载SMSSDK。
步骤如图所示。
此处的下载不是通过手动下载,而是通过通过代码下载,这样简单点。
第三步:把SMSSDK的代码添加到android
1.新建一个项目。
2.在AndroidManifest中加入权限。
如图所示:
权限代码如下:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<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.在Project的builder.grale处加入代码。
如图所示
代码如下:
classpath "com.mob.sdk:MobSDK:2018.0319.1724"
maven {
url 'https://jitpack.io' }
4.在Moudule中builder.gradle处加入代码
记得修改为你自己的apppKey和appSecret
如果你的是android studio4.0,4.1
加入如下图代码:
如果你是其他版本,加入下图格式即可,只要修改为apply plugin:'com.mob.sdk'
代码如下,根据你的版本选择代码:android studio4.0.4.1版本
id 'com.mob.sdk'
其他版本
apply plugin:'com.mob.sdk'
MobSDK版本代码如下,记得修改为你自己的appKey和appSecret
,不然可能会次数不够:
MobSDK {
appKey "31d18b327d099" //修改为你自己的appKey
appSecret "5e6a2e16f58f9c1e374acf77abb70b70" //修改为你自己的appSecret
SMSSDK {
}
}
5.编写MainActivity文件。
主要代码如下:
Activity主要代码:
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.mob.MobSDK;
import org.json.JSONException;
import org.json.JSONObject;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
public class MainActivity extends AppCompatActivity {
EventHandler handler;
EditText editText;
EditText editText1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobSDK.init(this, "31d18b327d099","5e6a2e16f58f9c1e374acf77abb70b70"); //记得此处修改为你的AppKey和AppSecret
editText=findViewById(R.id.yanzhengma);
editText1=findViewById(R.id.phone);
handler = new EventHandler(){
@Override
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE){
//回调完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//提交验证码成功
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"验证成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
//获取验证码成功
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"验证码已发送", Toast.LENGTH_SHORT).show();
}
});
}else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
}
}else{
((Throwable)data).printStackTrace();
Throwable throwable = (Throwable) data;
try {
JSONObject obj = new JSONObject(throwable.getMessage());
final String des = obj.optString("detail");
if (!TextUtils.isEmpty(des)){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"提交错误信息", Toast.LENGTH_SHORT).show();
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
};
SMSSDK.registerEventHandler(handler);
}
//提交验证
public void tijiao(View view) {
String number = editText.getText().toString();
String phone=editText1.getText().toString();
SMSSDK.submitVerificationCode("86",phone,number);
}
//点击发送验证码
public void play(View view) {
//获取验证码
String phone=editText1.getText().toString();
SMSSDK.getVerificationCode("86",phone);
}
}
xml的主要代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/phone"
android:inputType="numberPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入手机号码"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送短信验证码"
android:onClick="play"
/>
<EditText
android:id="@+id/yanzhengma"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入手机验证码"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="tijiao"
android:text="提交"
/>
</LinearLayout>
如果你感觉代码不够的话,我附上所有代码项目地址:
百度网盘地址: https://pan.baidu.com/s/15JTwKU7pAP_KamWBnoXjyw
提取码: yyur
csdn地址设置为0积分可自由下载:https://download.csdn.net/download/qq_45137584/13737566
github地址:
有时间在传
第四步:看一下项目效果。
因为为了保护隐私,我把手机号输入框
设置为了密码的形式。但是不会影响我们观看效果。这个测试可以在手机模拟器上运行
,只需要输入手机号即可,不一定要输入是你注册mob的那个手机号
。效果如下:
因为我输入的是本机的号码,所有发送的验证码不发送到手机模拟器上面,而且手机模拟器也没有手机号码,所有下面附上本机接收验证码截图,以验证真实性。
恭喜你,需要的效果已经完成,如果你遇到什么问题可以提出来,因为毕竟我一个人也考虑不到这个情况。功能虽然简单,但是步骤并不少,只要细心肯定是可以实现的。
来源:oschina
链接:https://my.oschina.net/u/4356296/blog/4821491