资讯专栏INFORMATION COLUMN

Mob之短信验证集成SMSSDK

jeffrey_up / 1174人阅读

摘要:布局文件手机号获取验证码验证码验证验证码测试注册短信回调短信验证的回调监听回调完成提交验证码成功如果验证成功会在里返回数据。

开相关发中总会遇到短信验证这些操作,这周没有来得及写新的东西,借此分享一篇以前学习短信验证的笔记,本文使用的是 Mob 提供的 SMSSDK .

下载 SMSSDK

官网下载地址:SMSSDK

集成 SMSSDK

将 MobCommons.jar、MobTools.jar、SMSSDK-2.0.1.aar、SMSSDKGUI-2.0.1.aar 放到了app 的 libs 目录下,如果不需要带界面的 SMSSDK 可以不添加 SMSSDKGUI-2.0.1.aar,具体文件请参考最新的 SMSSDK。

配置 build.gradle 文件

打开 app 下面的 build.gradle 文件进行如下配置:

配置AndroidManifest.xml

在 AndroidManifest.xml 文件中配置权限和Application.

配置权限









配置 application
启动 SDK
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SMSSDK.initSDK(this, "您的appkey", "您的appsecret");
    }
}
参考代码

实现一个简单的案例,获取验证码,并进行验证。

布局文件


    
        
        
        

    
    
        
        
        
    

MainActivity
/**
 * ShareSDk 验证码测试
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private EditText et_number;
    private EditText et_checkCode;

    private TextView tv_getCheckCode;
    private TextView tv_sendCheckCode;

    private String phoneNumber;
    private String checkCode;
    private ProgressDialog dialog;

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

        et_number = (EditText) findViewById(R.id.et_number);
        et_checkCode = (EditText) findViewById(R.id.et_checkCode);
        tv_getCheckCode = (TextView) findViewById(R.id.tv_getCheckCode);
        tv_sendCheckCode = (TextView) findViewById(R.id.tv_sendCheckCode);

        checkCode = et_checkCode.getText().toString().trim();

        tv_getCheckCode.setOnClickListener(this);
        tv_sendCheckCode.setOnClickListener(this);

        //注册短信回调
        SMSSDK.registerEventHandler(ev);
    }

    /**
     * 短信验证的回调监听
     */
    private EventHandler ev = new EventHandler() {
        @Override
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) { //回调完成
                //提交验证码成功,如果验证成功会在data里返回数据。data数据类型为HashMap
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    Log.e("TAG", "提交验证码成功" + data.toString());
                    HashMap mData = (HashMap) data;
                    String country = (String) mData.get("country");//返回的国家编号
                    String phone = (String) mData.get("phone");//返回用户注册的手机号

                    Log.e("TAG", country + "====" + phone);

                    if (phone.equals(phoneNumber)) {
                        runOnUiThread(new Runnable() {//更改ui的操作要放在主线程,实际可以发送hander
                            @Override
                            public void run() {
                                showDailog("恭喜你!通过验证");
                                dialog.dismiss();
                            }
                        });
                    } else {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                showDailog("验证失败");
                                dialog.dismiss();
                            }
                        });
                    }

                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {//获取验证码成功
                    Log.e("TAG", "获取验证码成功");
                } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {//返回支持发送验证码的国家列表

                }
            } else {
                ((Throwable) data).printStackTrace();
            }
        }
    };

    private void showDailog(String text) {
        new AlertDialog.Builder(this)
                .setTitle(text)
                .setPositiveButton("确定", null)
                .show();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.tv_getCheckCode:
                toast("getCode");
                getCheckCode();
                break;
            case R.id.tv_sendCheckCode:
                toast("sendCode");
                sendCheckCode();
                break;
        }
    }

    /**
     * 获取验证码
     */
    public void getCheckCode() {
        phoneNumber = et_number.getText().toString().trim();
        //发送短信,传入国家号和电话号码
        if (TextUtils.isEmpty(phoneNumber)) {
            toast("号码不能为空!");
        } else {
            SMSSDK.getVerificationCode("+86", phoneNumber);
            toast("发送成功!");
        }
    }

    /**
     * 向服务器提交验证码,在监听回调中监听是否验证
     */
    private void sendCheckCode() {
        checkCode = et_checkCode.getText().toString();
        if (!TextUtils.isEmpty(checkCode)) {
            dialog = ProgressDialog.show(this, null, "正在验证...", false, true);
            //提交短信验证码
            SMSSDK.submitVerificationCode("+86", phoneNumber, checkCode);//国家号,手机号码,验证码
            Toast.makeText(this, "提交了注册信息:" + phoneNumber, Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * Toast
     * @param info
     */
    public void toast(String info){
        Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        SMSSDK.unregisterEventHandler(ev);
        super.onDestroy();
    }
}
测试效果

稍等一下,gif动画时间有点长,为了接收到短信哦!

可以选择关注微信公众号:jzman-blog 获取最新更新,一起交流学习!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/14977.html

相关文章

  • 如何不花钱实现简单的短信验证功能

    摘要:相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉云通讯还有的。 相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉、云通讯还有MobTech的SMSSDK。对比之下,最终选择了完全免费的SMSSDK打算小试...

    tangr206 评论0 收藏0
  • Mob社会化分享集成ShareSDK

    摘要:接着上篇顺便分享一篇自己使用的笔记,上篇我们集成了完成了短信接收验证码的功能,请参考之短信验证集成,如何在项目已经集成的情况下集成到项目中,上一篇中我们集成使用的是导入包的形式,这里我们使用创建的方式引入,主要内容如下下载引入创建创建在项目 接着上篇顺便分享一篇自己使用 ShareSDK 的笔记,上篇我们集成了 SMSSDK 完成了短信接收验证码的功能,请参考Mob 之 短信验证集成 ...

    venmos 评论0 收藏0
  • wemall app商城源码Android短信监听接收器

    摘要:是客户端程序,服务端采用微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随阿意定制修改。本文分享其中短信监听接收器,用于自动获取短信验证码,然后自动填写到验证码区域代码,供技术员参考学习。 wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成...

    aervon 评论0 收藏0
  • 永久免费的短信验证码平台是不存在的!

    摘要:短信验证码的到达率是维护用户的关键,那些号称永久免费的短信验证码平台其实是不可靠的,因为它基本不会保证到达率。摩杜云免费短信验证码平台超过试用部分每条约分钱起,具体以行业领域和客服报价为准。 短信验证码平台软件一般都是免费的,只要在摩杜云注册个账号就可以免费使用,同时还可以享受20条短信左右的试用。但后续通过平台向用户发送短信验证码是收费的,毕竟短信服务商从运营...

    bluesky 评论0 收藏0
  • 聚合数据Android SDK 短信api接口验证演示示例

    摘要:到聚合是聚合数据平台为移动开发者提供的免费数据接口使用前请先到聚合平台注册申请相关数据下载聚合数据将开发包里的拷贝到根目录下,将拷贝到目录下如图根据接口说明文档找到以下方法程序中调用方法首先在中添加权限在标签内部加入你申请的申 1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2....

    banana_pi 评论0 收藏0

发表评论

0条评论

jeffrey_up

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<