Android 免费短信新姿势

作者: 飞指 | 来源:发表于2019-10-27 13:12 被阅读0次

个人在开发的过程中,总想着怎么样去用最小的代价开发出来高质量的产品,但是对于一些较好资源总是存在收费情况,因此如何在将收费资源转换成免费资源就成了一种趋势。废话也不多说了,直接进入主题:
MobTech是全球领先的综合性智能科技企业,以数据应用为主导,融合顶尖的大数据、云计算、人工智能等多元先进技术,为全球多个国家和地区的企业、开发者和机构提供商业智能解决方案、App运营赋能方案、企业级AI智能方案、数据咨询研究等服务。
今天主要说明的是MobTech的免费短信SDK集成。

集成准备

1.注册应用申请Mob的 AppKey 和 AppSecret,详情可以点击查看注册流程

配置集成

1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,

buildscript {
    repositories {
        ...
    }
    dependencies {
        ...
        classpath "com.mob.sdk:MobSDK:2018.0319.1724"
    }
}
  1. 在使用SMSSDK模块的build.gradle中,添加MobSDK插件和扩展,如下所示:
// 添加插件
apply plugin: 'com.mob.sdk'

// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
    appKey "申请Mob的appkey"
    appSecret "申请Mob的AppSecret"
    SMSSDK {}
}

代码调用

SMSSDK for Android

一.集成准备

1.注册应用申请Mob的 AppKey 和 AppSecret,详情可以点击查看注册流程

二.配置集成

1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,如下所示:

buildscript {
    repositories {
        ...
    }
    dependencies {
        ...
        classpath "com.mob.sdk:MobSDK:2018.0319.1724"
    }
}
share1

2、在使用SMSSDK模块的build.gradle中,添加MobSDK插件和扩展,如下所示:

// 添加插件
apply plugin: 'com.mob.sdk'

// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
    appKey "申请Mob的appkey"
    appSecret "申请Mob的AppSecret"
    SMSSDK {}
}

三.代码调用

1.发送验证码并取得验证结果(如果提示489错误MD5错误请点击这里
目前SMSSDK提供两套接口方案,一种是默认的UI集成即可,如下1-1所示;另一种是不使用我们的UI,直接调用发送和验证接口,如下1-2所示;
1-1.以可视化界面完成操作

public void sendCode(Context context) {
    RegisterPage page = new RegisterPage();
    //如果使用我们的ui,没有申请模板编号的情况下需传null
    page.setTempCode(null);
    page.setRegisterCallback(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 处理成功的结果
                HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
                // 国家代码,如“86”
                String country = (String) phoneMap.get("country"); 
                // 手机号码,如“13800138000”
                String phone = (String) phoneMap.get("phone"); 
                // TODO 利用国家代码和手机号码进行后续的操作
            } else{
                // TODO 处理错误的结果
            }
        }
    });
    page.show(context);
}

Kotin 版本

fun sendCode(context: Context) {
    val page = RegisterPage()
    //如果使用我们的ui,没有申请模板编号的情况下需传null
    page.setTempCode(null)
    page.setRegisterCallback(object : EventHandler() {
        fun afterEvent(event: Int, result: Int, data: Any) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 处理成功的结果
                val phoneMap = data as HashMap<String, Any>
                // 国家代码,如“86”
                val country = phoneMap["country"] as String 
                // 手机号码,如“13800138000”
                val phone = phoneMap["phone"] as String 
                // TODO 利用国家代码和手机号码进行后续的操作
            } else {
                // TODO 处理错误的结果
            }
        }
    })
    page.show(context)
}

1-2、以无界面接口完成操作
a.注册监听回调,后面执行发送验证的时候才能正常收到回调

EventHandler eh=new EventHandler(){
@Override
    public void afterEvent(int event, int result, Object data) {
        // TODO 此处不可直接处理UI线程,处理后续操作需传到主线程中操作
        Message msg = new Message();
        msg.arg1 = event;
        msg.arg2 = result;
        msg.obj = data;
        mHandler.sendMessage(msg);

    }
};


//注册一个事件回调监听,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eh);

Kotin 版本

val eh = object : EventHandler() {
      override fun afterEvent(event: Int, result: Int, data: Any?) {
            // TODO 此处不可直接处理UI线程,处理后续操作需传到主线程中操作
            val msg = Message()
            msg.arg1 = event
            msg.arg2 = result
            msg.obj = data
            mHandler.sendMessage(msg)
       }
}

//注册一个事件回调监听,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eh)

如上,后续判断回调类型可参考文档 无GUI接口调用

b.发送验证码,具体参数可以参考 无GUI接口调用

// 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
SMSSDK.getVerificationCode(country, phone);

c.验证验证码,具体参数可以参考 无GUI接口调用

// 提交验证码,其中的code表示验证码,如“1357”
SMSSDK.submitVerificationCode(country, phone, code);

// 使用完EventHandler需注销,否则可能出现内存泄漏

protected void onDestroy() {
    super.onDestroy();
    SMSSDK.unregisterEventHandler(eventHandler);
}

混淆设置

混淆设置:SMSSDK已经做了混淆处理,再次混淆会导致不可预期的错误,请在您的混淆脚本中添加如下的配置,跳过对SMSSDK的混淆操作:

-keep class com.mob.**{*;}
-keep class cn.smssdk.**{*;}
-dontwarn com.mob.**

注意事项

SMSSDK默认会添加一套开源的GUI库,如果您不需要这个库,可以在SMSSDK下设置“gui false”来关闭它
若使用GUI的自动填充验证码功能,需在SMSSDK{}中打开此设置 “autoSMS true ”
MobSDK默认为SMSSDK提供最新版本的集成,如果您想锁定某个版本,可以在SMSSDK{}中设置“version “某个版本””来固定使用这个版本
在尝试读取通信录时以弹窗提示用户(可选功能),在监听回调前调用即可;

SMSSDK.setAskPermisionOnReadContact(true);

如果使用MobSDK的模块会被其它模块依赖,请确保依赖它的模块也引入MobSDK插件,或在此模块的gradle中添加:

repositories {
    jcenter()
}

相关文章

  • Android 免费短信新姿势

    个人在开发的过程中,总想着怎么样去用最小的代价开发出来高质量的产品,但是对于一些较好资源总是存在收费情况,因此如何...

  • 短信

    扣费,短扣 转储蓄短信 点击忘记密码,没有发送短信,转手机银行客户端 VIP免费短信转储蓄短信

  • Android-SmsManager监听短信发送状态

    发送短信以后,我们所关心的就是短信有没有发送成功。Android中通过SmsManager可以实现监听短信发送状态...

  • iOS 免费短信验证

    近日在项目开发中注册时需要短信验证,当时还在想怎么弄才好,晚上突然想起来曾经见过一个免费的短信验证的,然后就凭印象...

  • Mob免费短信验证

    1.导入SDK以及类库

    ### libz.dyliblibicucore.dylibMessage...

  • 免费短信接收平台

    此短信验证码平台适用到注册网站时提供手机号验证。在我们担心手机号泄露或重复验证时,可使用微夏博客在此文章中分享的短...

  • mob短信登录(Android)

    短信验证(Android) 介绍 什么是短信验证:    短信验证是企业给消费者(用户)的一个凭证,通过短信内容的...

  • Android学习笔记(六)

    短信技术:短信数据库存在于/data/data/com.android.providers.telephoney目...

  • 2018-09-07 android webview 网页动态插

    android webview 网页动态插入javascript的正确姿势

  • [AndroidDeveloper直接跳转AOSP源码]Chro

    Android SDK Search插件下载 从阅读ANDROID源码的一些姿势看来的

网友评论

    本文标题:Android 免费短信新姿势

    本文链接:https://www.haomeiwen.com/subject/ihipvctx.html