Mob短信验证

最近发现Mob短信验证还是很好用的,顺便使用了一下,记录一下使用步骤.Mob短信注册分为通过自己服务端验证和App自身验证,我这边使用的App与Mob验证.
一,As配置文件

AS版本的SMSSDK目录下包含以下内容:

smssdk_as目录结构

MobCommons.jar:Mob 通用公共库(必须)

MobTools.jar:Mob 工具公共库(必须)

SMSSDK-<version>.aar:SMSSDK 核心(必须)

SMSSDKGUI-<version>.aar:SMSSDK GUI 开源库(非必须)

HowToUse.txt:使用说明

注意:如果你同时使用ShareSDK,保留一份公共库就行(公共库版本一致或兼容)。

2.1、将以上文件按需放入Android Studio项目所要使用SMSSDK的Module所在的Libs里面:

smssdk_导入as项目

2.2、在Module的build.gradle里面将libs加入仓库(repositories):

repositories{
    flatDir{
        dirs 'libs' //就是你放aar的目录地址
    }
}
2.3、在Module的build.gradle里面添加依赖(dependencies ):

dependencies {
    ....//你的其他依赖
    compile name:'SMSSDK-<version>',ext:'aar'
    compile name:'SMSSDKGUI-<version>',ext:'aar'
}
最终,你的build.gradle看起来应该像这样:

smssdk_as build文件

三、添加代码

1.配置AndroidManifest.xml

1.1、添加以下权限:

<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" />
1.2、添加以下Activity:

<activity
   android:name="com.mob.tools.MobUIShell"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:windowSoftInputMode="stateHidden|adjustResize"/>
1.3、在Application节点下添加以下属性:

android:name="com.mob.MobApplication"
1.4、在Application节点下添加以下meta-data:

<!-- 通过AndroidManifest配置AppKey和AppSecret,如果你选择通过代码配置,则不需要配置以下meta-data -->
<meta-data android:name="Mob-AppKey" android:value="你的AppKey"/>
<meta-data android:name="Mob-AppSecret" android:value="你的AppSecret"/>
最终,你的AndroidManifest.xml看起来应该像这样:

smssd_manifest

二,获取验证码和检验验证码

1.1,获取验证码
  SMSSDK.getVerificationCode("86", phoneNum);
1.2,与MOb检验验证码是否正确
  SMSSDK.submitVerificationCode("86", phoneNum, verify);

三,注册事件便于自己后续操作

1.1注册事件
 SMSSDK.registerEventHandler(eh);
1.2注册后处理自己事件
 EventHandler eh = new EventHandler() {
        public void afterEvent(int arg0, int arg1, Object arg2) {  //afterEvent 为调用SDK之后回调的方法
            Message m = Message.obtain();
            m.what = 1;
            m.arg1 = arg0;//event
            m.arg2 = arg1;//result
            smsHandler.sendMessage(m);
        }
    };
    Handler smsHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1:
                    if (msg.arg2 == SMSSDK.RESULT_COMPLETE) {//发送成功的情况
                        if (msg.arg1 == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {//验证成功通过
                            Intent intent = new Intent(getApplicationContext(), PassWordActivity.class);
                            intent.putExtra("username", phoneNum);
                            startActivity(intent);
                        } else if (msg.arg1 == SMSSDK.EVENT_GET_VERIFICATION_CODE) {//验证码已经从服务器发出
                            ToastUtil.show(getApplicationContext(), "验证码已发出,请注意查收");
                        }
                    } else {
                        ToastUtil.show(getApplicationContext(), "验证码错误");
                    }
                    break;
            }
        }

        ;
    };

四,按钮监听倒计时器

 private class MyHandler extends Handler {

        private final WeakReference<RegisterActivity> weakReference;

        public MyHandler(RegisterActivity activity) {
            weakReference = new WeakReference<RegisterActivity>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            RegisterActivity activity = weakReference.get();
            if (activity != null) {
                switch (msg.what) {
                    case 0:
                        if (msg.arg1 == 0) {
                            getVerify.setText("重新获取");
                            getVerify.setClickable(true);
                        } else {
                            getVerify.setText("重新获取(" + msg.arg1 + ")秒");
                            getVerify.setClickable(false);
                        }
                        break;
                }
            }
        }
    }

    private void sendMessageClick() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 59; i >= 0; i--) {
                    Message msg = myHandler.obtainMessage();
                    msg.arg1 = i;
                    myHandler.sendMessage(msg);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值