Android 免費(fèi)短信新姿勢(shì)

個(gè)人在開發(fā)的過(guò)程中,總想著怎么樣去用最小的代價(jià)開發(fā)出來(lái)高質(zhì)量的產(chǎn)品,但是對(duì)于一些較好資源總是存在收費(fèi)情況,因此如何在將收費(fèi)資源轉(zhuǎn)換成免費(fèi)資源就成了一種趨勢(shì)。廢話也不多說(shuō)了,直接進(jìn)入主題:
MobTech是全球領(lǐng)先的綜合性智能科技企業(yè),以數(shù)據(jù)應(yīng)用為主導(dǎo),融合頂尖的大數(shù)據(jù)、云計(jì)算、人工智能等多元先進(jìn)技術(shù),為全球多個(gè)國(guó)家和地區(qū)的企業(yè)、開發(fā)者和機(jī)構(gòu)提供商業(yè)智能解決方案、App運(yùn)營(yíng)賦能方案、企業(yè)級(jí)AI智能方案、數(shù)據(jù)咨詢研究等服務(wù)。
今天主要說(shuō)明的是MobTech的免費(fèi)短信SDK集成。

集成準(zhǔn)備

1.注冊(cè)應(yīng)用申請(qǐng)Mob的 AppKey 和 AppSecret,詳情可以點(diǎn)擊查看注冊(cè)流程

配置集成

1、打開項(xiàng)目根目錄的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插件和擴(kuò)展,如下所示:
// 添加插件
apply plugin: 'com.mob.sdk'

// 在MobSDK的擴(kuò)展中注冊(cè)SMSSDK的相關(guān)信息
MobSDK {
    appKey "申請(qǐng)Mob的appkey"
    appSecret "申請(qǐng)Mob的AppSecret"
    SMSSDK {}
}

代碼調(diào)用

SMSSDK for Android

一.集成準(zhǔn)備

1.注冊(cè)應(yīng)用申請(qǐng)Mob的 AppKey 和 AppSecret,詳情可以點(diǎn)擊查看注冊(cè)流程

二.配置集成

1、打開項(xiàng)目根目錄的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插件和擴(kuò)展,如下所示:

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

// 在MobSDK的擴(kuò)展中注冊(cè)SMSSDK的相關(guān)信息
MobSDK {
    appKey "申請(qǐng)Mob的appkey"
    appSecret "申請(qǐng)Mob的AppSecret"
    SMSSDK {}
}

三.代碼調(diào)用

1.發(fā)送驗(yàn)證碼并取得驗(yàn)證結(jié)果(如果提示489錯(cuò)誤MD5錯(cuò)誤請(qǐng)點(diǎn)擊這里
目前SMSSDK提供兩套接口方案,一種是默認(rèn)的UI集成即可,如下1-1所示;另一種是不使用我們的UI,直接調(diào)用發(fā)送和驗(yàn)證接口,如下1-2所示;
1-1.以可視化界面完成操作

public void sendCode(Context context) {
    RegisterPage page = new RegisterPage();
    //如果使用我們的ui,沒(méi)有申請(qǐng)模板編號(hào)的情況下需傳null
    page.setTempCode(null);
    page.setRegisterCallback(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 處理成功的結(jié)果
                HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
                // 國(guó)家代碼,如“86”
                String country = (String) phoneMap.get("country"); 
                // 手機(jī)號(hào)碼,如“13800138000”
                String phone = (String) phoneMap.get("phone"); 
                // TODO 利用國(guó)家代碼和手機(jī)號(hào)碼進(jìn)行后續(xù)的操作
            } else{
                // TODO 處理錯(cuò)誤的結(jié)果
            }
        }
    });
    page.show(context);
}

Kotin 版本

fun sendCode(context: Context) {
    val page = RegisterPage()
    //如果使用我們的ui,沒(méi)有申請(qǐng)模板編號(hào)的情況下需傳null
    page.setTempCode(null)
    page.setRegisterCallback(object : EventHandler() {
        fun afterEvent(event: Int, result: Int, data: Any) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 處理成功的結(jié)果
                val phoneMap = data as HashMap<String, Any>
                // 國(guó)家代碼,如“86”
                val country = phoneMap["country"] as String 
                // 手機(jī)號(hào)碼,如“13800138000”
                val phone = phoneMap["phone"] as String 
                // TODO 利用國(guó)家代碼和手機(jī)號(hào)碼進(jìn)行后續(xù)的操作
            } else {
                // TODO 處理錯(cuò)誤的結(jié)果
            }
        }
    })
    page.show(context)
}

1-2、以無(wú)界面接口完成操作
a.注冊(cè)監(jiān)聽(tīng)回調(diào),后面執(zhí)行發(fā)送驗(yàn)證的時(shí)候才能正常收到回調(diào)

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

    }
};


//注冊(cè)一個(gè)事件回調(diào)監(jiān)聽(tīng),用于處理SMSSDK接口請(qǐng)求的結(jié)果
SMSSDK.registerEventHandler(eh);

Kotin 版本

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

//注冊(cè)一個(gè)事件回調(diào)監(jiān)聽(tīng),用于處理SMSSDK接口請(qǐng)求的結(jié)果
SMSSDK.registerEventHandler(eh)

如上,后續(xù)判斷回調(diào)類型可參考文檔 無(wú)GUI接口調(diào)用

b.發(fā)送驗(yàn)證碼,具體參數(shù)可以參考 無(wú)GUI接口調(diào)用

// 請(qǐng)求驗(yàn)證碼,其中country表示國(guó)家代碼,如“86”;phone表示手機(jī)號(hào)碼,如“13800138000”
SMSSDK.getVerificationCode(country, phone);

c.驗(yàn)證驗(yàn)證碼,具體參數(shù)可以參考 無(wú)GUI接口調(diào)用

// 提交驗(yàn)證碼,其中的code表示驗(yàn)證碼,如“1357”
SMSSDK.submitVerificationCode(country, phone, code);

// 使用完EventHandler需注銷,否則可能出現(xiàn)內(nèi)存泄漏

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

混淆設(shè)置

混淆設(shè)置:SMSSDK已經(jīng)做了混淆處理,再次混淆會(huì)導(dǎo)致不可預(yù)期的錯(cuò)誤,請(qǐng)?jiān)谀幕煜_本中添加如下的配置,跳過(guò)對(duì)SMSSDK的混淆操作:

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

注意事項(xiàng)

SMSSDK默認(rèn)會(huì)添加一套開源的GUI庫(kù),如果您不需要這個(gè)庫(kù),可以在SMSSDK下設(shè)置“gui false”來(lái)關(guān)閉它
若使用GUI的自動(dòng)填充驗(yàn)證碼功能,需在SMSSDK{}中打開此設(shè)置 “autoSMS true ”
MobSDK默認(rèn)為SMSSDK提供最新版本的集成,如果您想鎖定某個(gè)版本,可以在SMSSDK{}中設(shè)置“version “某個(gè)版本””來(lái)固定使用這個(gè)版本
在嘗試讀取通信錄時(shí)以彈窗提示用戶(可選功能),在監(jiān)聽(tīng)回調(diào)前調(diào)用即可;

SMSSDK.setAskPermisionOnReadContact(true);

如果使用MobSDK的模塊會(huì)被其它模塊依賴,請(qǐng)確保依賴它的模塊也引入MobSDK插件,或在此模塊的gradle中添加:

repositories {
    jcenter()
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今年,陸陸續(xù)續(xù),有些讀我公眾號(hào)文章的人發(fā)來(lái)消息問(wèn)我,為何不像從前一樣幾乎日更,而是幾天才更一次文。也有群主問(wèn)我為何...
    曹曉紅簡(jiǎn)書閱讀 324評(píng)論 3 6
  • 濃霧綿延千萬(wàn)里仄仄平平平仄仄 啾啾飛鳥亂心弦平平仄仄仄平平 橋頭矗立癡癡盼平平仄仄平平仄 靜待良人早日還仄仄平平仄仄平
    夜雨寒笛可兒閱讀 213評(píng)論 0 0
  • 糟糕,爸爸的鼻子越來(lái)越長(zhǎng)了! 事情還要從前天說(shuō)起。那天是莉莉的生日,爸爸卻沒(méi)有準(zhǔn)時(shí)回家。莉莉和媽媽看著一桌子的飯菜...
    馮清和閱讀 1,924評(píng)論 6 20
  • 最近,我發(fā)現(xiàn)我有點(diǎn)皮,為什么這么說(shuō)呢?嗯。我干嗎告訴你啊…我就是皮,油油查克鬧,我皮我驕傲… 不過(guò)最近要考試了,真...
    優(yōu)秀的藍(lán)雞閱讀 287評(píng)論 1 1

友情鏈接更多精彩內(nèi)容