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帮孔,沒有申請(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文兢,沒有申請(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)聽回調(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)聽兼呵,用于處理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)聽,用于處理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)聽回調(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)系作者
  • 序言:七十年代末闹蒜,一起剝皮案震驚了整個(gè)濱河市寺枉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绷落,老刑警劉巖姥闪,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異砌烁,居然都是意外死亡筐喳,警方通過(guò)查閱死者的電腦和手機(jī)催式,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)避归,“玉大人荣月,你說(shuō)我怎么就攤上這事∈岜校” “怎么了哺窄?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)账锹。 經(jīng)常有香客問我萌业,道長(zhǎng),這世上最難降的妖魔是什么牌废? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任咽白,我火速辦了婚禮,結(jié)果婚禮上鸟缕,老公的妹妹穿的比我還像新娘晶框。我一直安慰自己,他們只是感情好懂从,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布授段。 她就那樣靜靜地躺著,像睡著了一般番甩。 火紅的嫁衣襯著肌膚如雪侵贵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天缘薛,我揣著相機(jī)與錄音窍育,去河邊找鬼。 笑死宴胧,一個(gè)胖子當(dāng)著我的面吹牛漱抓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恕齐,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼乞娄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了显歧?” 一聲冷哼從身側(cè)響起仪或,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎士骤,沒想到半個(gè)月后范删,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拷肌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瓶逃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了束铭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓块。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厢绝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出带猴,到底是詐尸還是另有隱情昔汉,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布拴清,位于F島的核電站靶病,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏口予。R本人自食惡果不足惜娄周,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沪停。 院中可真熱鬧煤辨,春花似錦、人聲如沸木张。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舷礼。三九已至鹃彻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妻献,已是汗流浹背蛛株。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留育拨,地道東北人谨履。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像至朗,于是被迫代替她去往敵國(guó)和親屉符。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

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