android实现免费短信验证

2022-09-08 09:17:34 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

代码地址如下: http://www.demodashi.com/demo/12541.html

前言

获取短信验证码的的第三方很多,今天介绍一个获取短信验证码的demo,它有以下优势

  1. 短信到达率几乎100%
  2. 代码经过我封装,集成简单
  3. 获取短信验证码免费

下面对此demo的讲解涉及以下内容:

  1. 短信平台使用简介
  2. 短信验证集成配置
  3. 短信验证代码封装
  4. 倒计时类简单讲解
  5. 短信验证在代码中的使用
  6. 项目结构与效果图

实现过程

一.短信平台使用简介

短信平台地址及此平台发送短信验证的特点在demo中的 MobSDKHelper类的最上面有详细解释,这里就不再赘述了。

二.短信验证集成配置
2.1 在你的project的build.gradle中添加配置
代码语言:javascript复制
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中添加配置
代码语言:javascript复制
// 添加插件
apply plugin: 'com.mob.sdk'

// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
    appKey "244e915baae1a"
    appSecret "b5eb7df4657dbde9b36b673cef463a3e"

    SMSSDK {
//        gui false
    }
}

短信验证的获取有两种方式,分为有界面集成和无界面集成,上面代码中的“gui false”即为禁用有界面集成的代码,也就是设置为false后,只能使用无界面集成方法进行获取验证码

三.短信验证代码封装

短信验证码的获取及验证,我封装到了MobSDKHelper类中,下面对MobSDKHelper中涉及要用到的方法做以解释

请求获取短信验证码,你可以这样,其中phone为你的设置的手机号码,如”18507123357″:

代码语言:javascript复制
 MobSDKHelper.getInstance().sendCode("86", phone, new MobSDKHelper.SendListener() {
                    @Override
                    public void success(String phone) {
                        //请求验证码成功的处理逻辑
                        //......
                    }

                    @Override
                    public void failed() {
                        //请求验证码失败的处理逻辑
                        //......
                    }
                });

手机收到验证码并填入editText中,点击注册来验证验证码是否正确,你可以这样,其中phone为电话号码,code为收到的验证码:

代码语言:javascript复制
  MobSDKHelper.getInstance().submitCode("86", phone, code,new MobSDKHelper.SubmitListener() {
                    @Override
                    public void success(String phone) {
                        //验证成功,做注册逻辑
                        //......
                    }

                    @Override
                    public void failed() {
                                                //验证失败,做失败处理逻辑
                        //......

                    }
                });

注销短信验证服务,一般在activity的onDestroy()方法中进行,注销你可以类似这样处理:

代码语言:javascript复制
    @Override
    protected void onDestroy(){
        MobSDKHelper.getInstance().unRegistSMSS();

        super.onDestroy();
    }
四.倒计时类简单讲解

短信验证涉及到倒计时的问题,我封装了一个倒计时类CountDownTimerHelper,下面对其使用做讲解

CountDownTimerHelper继承于CountDownTimer类,初始化的话,你可以这样:

代码语言:javascript复制
//初始化
mCountDownTimerHelper=new CountDownTimerHelper(context,button,millisInFuture,countDownInterval);
//解释:context为上下文
//button 为点击获取验证码的Button对象
//millisInFuture 为总共需要倒计时的时间,单位为毫秒
//countDownInterval 为倒计时时间间隔,单位毫秒

开启倒计时,你可以如下处理:

代码语言:javascript复制
mCountDownTimerHelper.startTimer();

取消倒计时,一般在activity的onDestroy()方法中进行,你可以类似如下处理

代码语言:javascript复制
 @Override
    protected void onDestroy(){

        if(mCountDownTimerHelper!=null){
            mCountDownTimerHelper.cancelTimer();
        }
        super.onDestroy();
    }
五.短信验证在代码中的使用

下面简单贴出在MainActivity中代码的使用范例:

代码语言:javascript复制
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();
    }
六.项目结构与运行效果图

项目结构图

运行效果图

android实现免费短信验证

代码地址如下: http://www.demodashi.com/demo/12541.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154661.html原文链接:https://javaforall.cn

0 人点赞