Android SMSSDK非Gradle集成教程

一账劲、說(shuō)明

(1)3.x與之前的舊版本互不兼容戳护,請(qǐng)嚴(yán)格按照本文檔進(jìn)行3.x的首次集成或老版本的升級(jí)操作。

(2)3.x之前版本的集成瀑焦,請(qǐng)參考:http://wiki.mob.com/android-%e7%9f%ad%e4%bf%a1sdk%e9%9b%86%e6%88%90%e6%96%87%e6%a1%a3/

–>集成之前先要申請(qǐng)Mob的appkey與appsecret腌且;申請(qǐng)完添加短信SDK的產(chǎn)品;得到key我們開(kāi)始集成蝠猬;

二切蟋、獲取SDK

請(qǐng)至Mob官網(wǎng)下載最新SDK统捶,解壓后會(huì)看到以下目錄結(jié)構(gòu):


SMSSDK下存放的是短信SDK的全部?jī)?nèi)容榆芦。

三、導(dǎo)入SDK

1.Eclipse

Eclipse版本的SMSSDK目錄下包含兩個(gè)工程:


SMSSDK:短信SDK核心庫(kù)(必須)

ShortMessageSDKGUI:我們提供的開(kāi)源GUI庫(kù)(非必須)

如果你不想定制自己的UI喘鸟,可以直接使用我們提供的ShortMessageSDKGUI匆绣,否則,不需要導(dǎo)入ShortMessageSDKGUI什黑。接下來(lái)崎淳,我們以使用ShortMessageSDKGUI為例說(shuō)明。

1.1愕把、首先將上述兩個(gè)工程導(dǎo)入Eclipse:


1.2拣凹、將上述兩個(gè)工程掛接到你的工程上:

右鍵你的工程→ Properties →Android


同時(shí)將SMSSDK掛接到ShortMessageSDKGUI上:


注意:如果你不需要使用ShortMessageSDKGUI,請(qǐng)直接將SMSSDK掛接到你的項(xiàng)目上恨豁。

2.Android Studio

從3.1.0版本開(kāi)始嚣镜,不再提供獨(dú)立的Android Studio版本下載,推薦AS版開(kāi)發(fā)者按照最新的maven集成方式進(jìn)行在線下載安裝橘蜜。

AS版本的SMSSDK目錄下包含以下內(nèi)容:


MobCommons.jar:Mob 通用公共庫(kù)(必須)

MobTools.jar:Mob 工具公共庫(kù)(必須)

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

SMSSDKGUI-<version>.aar:SMSSDK GUI 開(kāi)源庫(kù)(非必須)

HowToUse.txt:使用說(shuō)明

注意:如果你同時(shí)使用ShareSDK,保留一份公共庫(kù)就行(公共庫(kù)版本一致或兼容)菊匿。

2.1、將以上文件按需放入Android Studio項(xiàng)目所要使用SMSSDK的Module所在的Libs里面:


2.2、在Module的build.gradle里面將libs加入倉(cāng)庫(kù)(repositories):

repositories{

? ? flatDir{

? ? ? ? dirs 'libs' //就是你放aar的目錄地址

? ? }

}


2.3跌捆、在Module的build.gradle里面添加依賴(lài)(dependencies )注意:SMSSDK-<verison>徽职,是隨著版本變化的;eg:3.0.0的版本則需要改成:compile name:’SMSSDK-3.0.0′,ext:’aar’

dependencies {

? ? ....//你的其他依賴(lài)

? ? compile name:'SMSSDK-<version>',ext:'aar'

? ? compile name:'SMSSDKGUI-<version>',ext:'aar'

}


最終佩厚,你的build.gradle看起來(lái)應(yīng)該像這樣:


四姆钉、添加代碼

1.配置AndroidManifest.xml

1.1、添加以下權(quán)限:

<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.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節(jié)點(diǎn)下添加以下屬性:

android:name="com.mob.MobApplication"

1.4、在Application節(jié)點(diǎn)下添加以下meta-data:

<!-- 通過(guò)AndroidManifest配置AppKey和AppSecret闺鲸,如果你選擇通過(guò)代碼配置筋讨,則不需要配置以下meta-data -->

<meta-data android:name="Mob-AppKey" android:value="你的AppKey"/>

<meta-data android:name="Mob-AppSecret" android:value="你的AppSecret"/>


最終,你的AndroidManifest.xml看起來(lái)應(yīng)該像這樣:


?2.使用SDK功能

有兩種方法完成驗(yàn)證碼短信的發(fā)送和驗(yàn)證:調(diào)用可視化界面和使用無(wú)界面接口

2-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;

? ? ? ? ? ? ? ? String country = (String) phoneMap.get("country"); // 國(guó)家代碼,如“86”

? ? ? ? ? ? ? ? String phone = (String) phoneMap.get("phone"); // 手機(jī)號(hào)碼立镶,如“13800138000”

? ? ? ? ? ? ? ? // TODO 利用國(guó)家代碼和手機(jī)號(hào)碼進(jìn)行后續(xù)的操作

? ? ? ? ? ? } else{

? ? ? ? ? ? ? ? // TODO 處理錯(cuò)誤的結(jié)果

? ? ? ? ? ? }

? ? ? ? }

? ? });

? ? page.show(context);

}

2-2壁袄、以無(wú)界面接口完成操作

// 在嘗試讀取通信錄時(shí)以彈窗提示用戶(可選功能)

SMSSDK.setAskPermisionOnReadContact(true);


EventHandler eventHandler = new EventHandler() {

? ? public void afterEvent(int event, int result, Object data) {

? ? ? ? // afterEvent會(huì)在子線程被調(diào)用,因此如果后續(xù)有UI相關(guān)操作媚媒,需要將數(shù)據(jù)發(fā)送到UI線程

? ? ? ? Message msg = new Message();

? ? ? ? msg.arg1 = event;

? ? ? ? msg.arg2 = result;

? ? ? ? msg.obj = data;

? ? ? ? new Handler(Looper.getMainLooper(), new Callback() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public boolean handleMessage(Message msg) {

? ? ? ? ? ? ? ? int event = msg.arg1;

? ? ? ? ? ? ? ? int result = msg.arg2;

? ? ? ? ? ? ? ? Object data = msg.obj;

? ? ? ? ? ? ? ? if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {

? ? ? ? ? ? ? ? ? ? if (result == SMSSDK.RESULT_COMPLETE) {

? ? ? ? ? ? ? ? ? ? ? ? // TODO 處理成功得到驗(yàn)證碼的結(jié)果

? ? ? ? ? ? ? ? ? ? ? ? // 請(qǐng)注意嗜逻,此時(shí)只是完成了發(fā)送驗(yàn)證碼的請(qǐng)求,驗(yàn)證碼短信還需要幾秒鐘之后才送達(dá)

? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? // TODO 處理錯(cuò)誤的結(jié)果

? ? ? ? ? ? ? ? ? ? ? ? ((Throwable) data).printStackTrace();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {

? ? ? ? ? ? ? ? ? ? if (result == SMSSDK.RESULT_COMPLETE) {

? ? ? ? ? ? ? ? ? ? ? ? // TODO 處理驗(yàn)證碼驗(yàn)證通過(guò)的結(jié)果

? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? // TODO 處理錯(cuò)誤的結(jié)果

? ? ? ? ? ? ? ? ? ? ? ? ((Throwable) data).printStackTrace();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? // TODO 其他接口的返回結(jié)果也類(lèi)似缭召,根據(jù)event判斷當(dāng)前數(shù)據(jù)屬于哪個(gè)接口

? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? }

? ? ? ? }).sendMessage(msg);

? ? }

};

// 注冊(cè)一個(gè)事件回調(diào)栈顷,用于處理SMSSDK接口請(qǐng)求的結(jié)果

SMSSDK.registerEventHandler(eventHandler);


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

SMSSDK.getVerificationCode(country, phone);


// 提交驗(yàn)證碼搪哪,其中的code表示驗(yàn)證碼靡努,如“1357”

SMSSDK.submitVerificationCode(country, phone, code);


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

protected void onDestroy() {

? ? super.onDestroy();

? ? SMSSDK.unregisterEventHandler(eventHandler);

}


其中EventHandler是短信SDK的操作回調(diào)晓折,具體說(shuō)明文檔請(qǐng)參閱:短信SDK操作回調(diào)章節(jié)惑朦。

3.關(guān)于配置AppKey和AppSecret的說(shuō)明

配置AppKey和AppSecret有兩種方式:

(1)通過(guò)AndroidManifest配置

(2)通過(guò)代碼配置

以上方法擇一即可,建議使用第一種方式進(jìn)行配置漓概。

3.1漾月、通過(guò)AndroidManifest配置:

(1)在Application節(jié)點(diǎn)下添加以下屬性:

android:name="com.mob.MobApplication"

注意:如果你有自己的Application類(lèi),那么也可以讓你的Application類(lèi)繼承MobApplication即可垛耳。

(2)在Application節(jié)點(diǎn)下添加以下子節(jié)點(diǎn):

<!-- 通過(guò)AndroidManifest配置AppKey和AppSecret栅屏,如果你選擇通過(guò)代碼配置飘千,則不需要配置以下meta-data -->

<meta-data android:name="Mob-AppKey" android:value="你的AppKey"/>

<meta-data android:name="Mob-AppSecret" android:value="你的AppSecret"/>


3.2、通過(guò)代碼配置:

如果選擇通過(guò)代碼配置栈雳,則不需要繼承MobApplication护奈,只要在使用SMSSDK之前,調(diào)用以下代碼:

// 通過(guò)代碼注冊(cè)你的AppKey和AppSecret

MobSDK.init(context, "你的AppKey", "你的AppSecret");


五哥纫、代碼混淆

如果你開(kāi)啟了proguard混淆霉旗,需要在proguard的rules里面添加以下規(guī)則:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蛀骇,隨后出現(xiàn)的幾起案子厌秒,更是在濱河造成了極大的恐慌,老刑警劉巖擅憔,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸵闪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暑诸,警方通過(guò)查閱死者的電腦和手機(jī)蚌讼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)个榕,“玉大人篡石,你說(shuō)我怎么就攤上這事∥鞑桑” “怎么了凰萨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)械馆。 經(jīng)常有香客問(wèn)我胖眷,道長(zhǎng),這世上最難降的妖魔是什么狱杰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任瘦材,我火速辦了婚禮厅须,結(jié)果婚禮上仿畸,老公的妹妹穿的比我還像新娘。我一直安慰自己朗和,他們只是感情好错沽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著眶拉,像睡著了一般千埃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忆植,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天放可,我揣著相機(jī)與錄音谒臼,去河邊找鬼。 笑死耀里,一個(gè)胖子當(dāng)著我的面吹牛蜈缤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冯挎,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼底哥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了房官?” 一聲冷哼從身側(cè)響起趾徽,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翰守,沒(méi)想到半個(gè)月后孵奶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜡峰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年拒课,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片事示。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡早像,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肖爵,到底是詐尸還是另有隱情卢鹦,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布劝堪,位于F島的核電站冀自,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秒啦。R本人自食惡果不足惜熬粗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望余境。 院中可真熱鬧驻呐,春花似錦、人聲如沸芳来。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)即舌。三九已至佣盒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顽聂,已是汗流浹背肥惭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工盯仪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜜葱。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓磨总,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親笼沥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚪燕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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