前言
短信验证一直是大家需要使用到的,多数平台都有此功能,但收费一直是个问题,今天就讲一个免费短信验证平台
我研究的短信三方平台有
唯一id
但是唯一id官网暂停了,估计2018年4月份左右会重开,不过到时短信验证服务估计是要收费了。
然后又研究了另一个短信服务平台
mob.com官网
不过mob.com官网具有以下特点:
- 不经mob平台审核的app每天可使用免费短信验证条数有限,官方群解释说是每天20条
- 经过mob平台审核的app官方群解释是条数不受限
- 一般接收验证短信格式都是 “ 【掌淘科技】appName 短信验证码:XXXX,格式 ”,若想改短信格式,p官方群解释是需要提供公司相关资质材料修改app签名供平台审核,若是个人开发者没有公司相关材料的话,是改不了签名的,也即是改不了短信格式了
本篇文章主要讲解几个内容
- mob官网使用简介
- 短信验证集成配置
- 短信验证在代码中的使用
- 运行效果图
- 短信验证代码封装讲解
- 倒计时类简单讲解
- 参考
先来波效果图
2.png
一.mob官网使用简介
首先当然是要去mob.com官网注册一个账号,注册完毕后点击官网首页 “进入后台” 按钮,如下图
进入管理平台后,点击添加应用,然后填写应用相关信息,即可获得appkey等信息
f.png
下面对短信相关设置进行讲解
1.png
二.短信验证集成配置
配置方式分两种,一种是非maven集成方式,即是sdk集成方式,由于sdk集成比较麻烦,这里主要讲解maven集成方式
2.1在你的project的build.gradle中添加配置
buildscript {
repositories {
google()
jcenter()
//添加MobSDK的maven地址
maven {
url "http://mvn.mob.com/android"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
// 注册MobSDK
classpath 'com.mob.sdk:MobSDK:+'
}
}
2.2在你的app moduel的build.gradle中添加配置
// 添加插件
apply plugin: 'com.mob.sdk'
// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
appKey "xxxxxxxxxxxxx"//你的appKey
appSecret "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"//你的appSecret
SMSSDK {
// gui false
}
}
短信验证的获取有两种方式,分为有界面集成和无界面集成,上面代码中的“gui false”即为禁用有界面集成的代码,也就是设置为false后,只能使用无界面集成方法进行获取验证码
三. 短信验证在代码中的使用
3.1 先上activity布局代码,activity_main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e4e6cd"
android:gravity="center_horizontal"
android:orientation="vertical">
<EditText
android:id="@+id/edt_phone"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="50dp"
android:textColorHint="#eeeeee"
android:textColor="#000000"
android:background="#ffffff"
android:hint="手机号"
android:textSize="12sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:background="#ffffff"
android:orientation="horizontal">
<EditText
android:id="@+id/edt_code"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:textColorHint="#eeeeee"
android:textColor="#000000"
android:hint="手机号"
android:textSize="12sp"/>
<Button
android:id="@+id/btn_get"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="14sp"
android:text="获取验证码"/>
</LinearLayout>
<Button
android:id="@+id/btn_confirm"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:background="#00adfc"
android:textColor="#ffffff"
android:text="确认"/>
</LinearLayout>
3.2 MainActivity代码如下
package com.android.demo;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.android.base.BaseActivity;
import com.android.util.LogUtil;
import com.android.util.ToastUtil;
public class MainActivity extends BaseActivity{
private EditText mEdtPhone;
private EditText mEdtCode;
private Button mBtnGet;
private Button mBtnConfirm;
private CountDownTimerHelper mCountDownTimerHelper;
@Override
protected int getContentViewId() {
return R.layout.activity_main;
}
@Override
protected void initView() {
mEdtPhone=findViewById(R.id.edt_phone);
mEdtCode=findViewById(R.id.edt_code);
mBtnGet=findViewById(R.id.btn_get);
mBtnConfirm=findViewById(R.id.btn_confirm);
}
@Override
protected void initData() {
mCountDownTimerHelper=new CountDownTimerHelper(MainActivity.this,mBtnGet,60000,1000);
}
@Override
protected void setListener() {
mBtnGet.setOnClickListener(this);
mBtnConfirm.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String phone=mEdtPhone.getText().toString().trim();
String code=mEdtCode.getText().toString().trim();
switch (v.getId()) {
case R.id.btn_get://发送
mCountDownTimerHelper.startTimer();
MobSDKHelper.getInstance().sendCode("86", phone, new MobSDKHelper.SendListener() {
@Override
public void success(String phone) {
LogUtil.e(MainActivity.class,"===phone="+phone);
}
@Override
public void failed() {
LogUtil.e(MainActivity.class,"===发送失败了=====");
}
});
break;
case R.id.btn_confirm://提交
MobSDKHelper.getInstance().submitCode("86", phone, code,new MobSDKHelper.SubmitListener() {
@Override
public void success(String phone) {
ToastUtil.showShortToast(MainActivity.this,"====验证成功===");
LogUtil.e(MainActivity.class,"===验证成功====");
}
@Override
public void failed() {
ToastUtil.showShortToast(MainActivity.this,"====验证失败===");
LogUtil.e(MainActivity.class,"===验证失败=====");
}
});
break;
default:
break;
}
}
@Override
protected void onDestroy(){
MobSDKHelper.getInstance().unRegistSMSS();
if(mCountDownTimerHelper!=null){
mCountDownTimerHelper.cancelTimer();
}
super.onDestroy();
}
}
四.运行效果图
2.png五.短信验证代码封装讲解MobSDKHelper
我将短信验证码的获取与code的验证封装到MobSDKHelper中
MobSDKHelper代碼如下:
网友评论