Android开发之短信验证登录 - Bmob后端云短信验证最新版Android studio集成登录演示

关于短信验证的方法有很多,ShareSDK,友盟等等,但是作为开发人员我们只需要能够简单使用就行,特别是对于我们学习新技术需要用到短信登录时,当然不能使用公司的后台短信验证啦!在公司开发的项目的话得看公司具体的安排 就行##

第一步:毫无疑问当然是创建Bmob的短信验证应用,具体详情看截图

1:进入bmob的官网点击下方位置创建新的Android应用,名字啥的想怎么取都行

创建新应用
创建新应用

2:这里可以设置短信模板,我们选择自定义模板,可以编辑一些自定义发送内容等,自定义的需要通过审核就行

短信模块

3:这里创建好后会出现applicationID初始化bmob时需要它

应用ID等参数

4:这里下载Android的SDK,分别需要jnilibs 和libs两个文件夹下的内容,对自己英文不太敏感的就复制覆盖,以免出错

下载Android sdk

5:这里就是对应得集成文档内容所在文件夹

下载后的文档

二:下面就是在studio中操作了,详情看图片的步骤比较直观

1:选中libs包下的文件右键add to library 他就会在build.gradle下生成jar,如果没成功就手动添加了点击上方的同步,你也可以右键显示在文件夹中直接粘贴也行

add to library

2:在main下面将这个文档导入,这是jnilibs下的,弄完只需要同步过就可以了

jinlibs

3:在清单文件下添加里面这些权限

清单文件下添加权限

4:这是他目前最新的jar,当然他官方会更新sdk文档,到时参照文档中给的依赖版本就行。

gradle下添加依赖

5:初始化bmob

初始化

6:获取验证码的方法,一般集成了不会出错,如果在fragment中操作的话,注意jnilibs文档下的.so文件,操作不当会遇到很麻烦的错误不好解决

获取验证码

7:验证短信验证码输入是否超过他的位数,多了少了都会登录不成功

验证短信验证码

-倒计时方法说明
/**
* 倒计时1分钟操作
* 说明:
* new CountDownTimer(60000, 1000),第一个参数为倒计时总时间,第二个参数为倒计时的间隔时间
* 单位都为ms,其中必须要实现onTick()和onFinish()两个方法,onTick()方法为当倒计时在进行中时,
* 所做的操作,它的参数millisUntilFinished为距离倒计时结束时的时间,以此题为例,总倒计时长
* 为60000ms,倒计时的间隔时间为1000ms,然后59000ms、58000ms、57000ms...该方法的参数
* millisUntilFinished就等于这些每秒变化的数,然后除以1000,把单位变成秒,显示在textView
* 或Button上,则实现倒计时的效果,onFinish()方法为倒计时结束时要做的操作,此题可以很好的
* 说明该方法的用法,最后要注意的是当new CountDownTimer(60000, 1000)之后,一定要调用start()
* 方法把该倒计时操作启动起来,不调用start()方法的话,是不会进行倒计时操作的
*/

MainActivity部分

package com.lt.bmobsmsv101;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import cn.bmob.newsmssdk.BmobSMS;
import cn.bmob.newsmssdk.exception.BmobException;
import cn.bmob.newsmssdk.listener.RequestSMSCodeListener;
import cn.bmob.newsmssdk.listener.VerifySMSCodeListener;
/**
 * Created by kris on 2016.
 *
 */
public class MainActivity extends Activity implements View.OnClickListener {
    private EditText userName_et, passWord_et;
    private Button Message_btn, login_btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化bomb
        initBomb();
        //初始化控件
        initView();
        //设置监听
        initEvent();
    }


    //初始化控件
    private void initView() {
        userName_et = (EditText) findViewById(R.id.userName_et);
        passWord_et = (EditText) findViewById(R.id.passWord_et);
        Message_btn = (Button) findViewById(R.id.Message_btn);
        login_btn = (Button) findViewById(R.id.login_btn);
    }

    private void initEvent() {
        //监听初始化
        login_btn.setOnClickListener(this);
        Message_btn.setOnClickListener(this);
    }

    /**
     * 目标要求:输入手机号,点击获取验证码,用户把验证码填写完毕,点击登录
     * 具体内容:
     * 1、输入手机号时,判断是不是11位手机号,不是11位,当点击获取
     * 验证码按钮时则提示-->请输入11位有效手机号码,是11位,则进行点击获取验
     * 证码操作,并提示验证码已发送,请尽快使用
     * 2、当进行获取验证码操作后,获取验证码按钮变成灰色,且不可点击,并进行
     * 倒计时操作,倒计时1分钟后可以重新点击,再次发送验证码
     * 3、点击登录按钮时,若手机号和验证码有一个为空,则提示手机号与验证码
     * 不能为空,若验证码已填写,则判断用户填写所验证码与系统发送验证码是否一致,
     * 一致则提示登录成功,错误则提示验证码输入错误
     */
    private void initBomb() {
        BmobSMS.initialize(MainActivity.this, "d6179a5e8d4ad231c5389b460b4f9f7b");
        //这里是我的bmob的applicationID,使用时换成自己的就可了
    }


    @Override
    public void onClick(View v) {
        Log.e("MESSAGE:", "1");
        String userName = userName_et.getText().toString();
        String passWord = passWord_et.getText().toString();
        switch (v.getId()) {
            case R.id.Message_btn:
                Log.e("MESSAGE:", "2");
                if (userName.length() != 11) {
                    Toast.makeText(this, "请输入11位有效手机号码", Toast.LENGTH_SHORT).show();
                } else {
                    Log.e("MESSAGE:", "3");
                    //进行获取验证码操作和倒计时1分钟操作
                    BmobSMS.requestSMSCode(this, userName, "短信模板", new RequestSMSCodeListener() {
                        @Override
                        public void done(Integer integer, BmobException e) {
                            if (e == null) {
                                //发送成功时,让获取验证码按钮不可点击,且为灰色
                                Message_btn.setClickable(false);
                                Message_btn.setBackgroundColor(Color.GRAY);
                                Toast.makeText(MainActivity.this, "验证码发送成功,请尽快使用", Toast.LENGTH_SHORT).show();
                                /**
                                 * 倒计时1分钟操作
                                 * 说明:
                                 * new CountDownTimer(60000, 1000),第一个参数为倒计时总时间,第二个参数为倒计时的间隔时间
                                 * 单位都为ms,其中必须要实现onTick()和onFinish()两个方法,onTick()方法为当倒计时在进行中时,
                                 * 所做的操作,它的参数millisUntilFinished为距离倒计时结束时的时间,以此题为例,总倒计时长
                                 * 为60000ms,倒计时的间隔时间为1000ms,然后59000ms、58000ms、57000ms...该方法的参数
                                 * millisUntilFinished就等于这些每秒变化的数,然后除以1000,把单位变成秒,显示在textView
                                 * 或Button上,则实现倒计时的效果,onFinish()方法为倒计时结束时要做的操作,此题可以很好的
                                 * 说明该方法的用法,最后要注意的是当new CountDownTimer(60000, 1000)之后,一定要调用start()
                                 * 方法把该倒计时操作启动起来,不调用start()方法的话,是不会进行倒计时操作的
                                 */
                                new CountDownTimer(60000, 1000) {
                                    @Override
                                    public void onTick(long millisUntilFinished) {
                                        Message_btn.setBackgroundResource(R.drawable.button_shape02);
                                        Message_btn.setText(millisUntilFinished / 1000 + "秒");
                                    }

                                    @Override
                                    public void onFinish() {
                                        Message_btn.setClickable(true);
                                        Message_btn.setBackgroundResource(R.drawable.button_shape03);
                                        Message_btn.setText("重新发送");
                                    }
                                }.start();
                                Log.e("MESSAGE:", "4");
                            } else {
                                Toast.makeText(MainActivity.this, "验证码发送失败,请检查网络连接", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });

                }
                break;
            case R.id.login_btn:
                Log.e("MESSAGE:", "5");
                if (userName.length() == 0 || passWord.length() == 0 || userName.length() != 11) {
                    Log.e("MESSAGE:", "6");
                    Toast.makeText(this, "手机号或验证码输入不合法", Toast.LENGTH_SHORT).show();
                } else {
                    BmobSMS.verifySmsCode(this, userName, passWord, new VerifySMSCodeListener() {
                        @Override
                        public void done(BmobException e) {
                            if (e == null) {
                                Log.e("MESSAGE:", "7");
                                Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                            } else {
                                Log.e("MESSAGE:", "8");
                                Toast.makeText(MainActivity.this, "验证码错误", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
                break;
        }
    }




}

效果图展示点击获取验证码后按钮自动计时60 s#

这里写图片描述

更多细节请参考源码使用

https://git.oschina.net/null_838_9031/BmobSmsV1.01

CSDN请移步到

http://blog.csdn.net/First_CooMan##

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容