公司準(zhǔn)備采用個(gè)推作為第三方推送平臺(tái),我作為客戶端的頭號(hào)小鳥,掐指一算已經(jīng)畢業(yè) 0.1 年了,Leader 準(zhǔn)備把這個(gè)簡(jiǎn)單而又獨(dú)立的功能點(diǎn)交給我來(lái)處理,我緊張兮兮的打開 官網(wǎng)集成文檔 學(xué)習(xí)了起來(lái)。其實(shí)早在自己大二的時(shí)候就集成過(guò)個(gè)推 SDK,溜達(dá)一圈又回來(lái)集成個(gè)推推送SDK了,發(fā)現(xiàn)現(xiàn)在的個(gè)推 SDK 與當(dāng)年相比,集成起來(lái)真的方便多了。這次集成的是Android推送SDK,希望這篇文章,可以讓同學(xué)們可以更加快捷的集成個(gè)推推送。
我的師傅大鳥哥告訴我,集成各類 SDK 的第一步驟都是下載個(gè) Demo,先把 Demo 跑起來(lái)看看是什么鬼。咱也不敢問(wèn),咱也不敢說(shuō),先去 下載個(gè)Demo玩玩。我選擇的是國(guó)內(nèi)版本的個(gè)推 SDK,大家可以自行選擇要下載的版本。使用 AS 3.1 把 Getui_SDK_Demo_AS_maven 這個(gè)工程直接運(yùn)行起來(lái),出現(xiàn)了下面這個(gè)界面(此處已經(jīng)對(duì)我個(gè)人參數(shù)進(jìn)行了手動(dòng)馬賽克)。
"/>
好了,按我大鳥哥的意思至少 demo 已經(jīng)成功運(yùn)行起來(lái)了,接下去就是去把上述的 APPID,APPKey 等參數(shù)換成自己的,那么這些參數(shù)又是怎么來(lái)的呢?
看完 Demo 后,慌兮兮打開官網(wǎng)集成文檔,原來(lái)那些參數(shù)是需要?jiǎng)?chuàng)建應(yīng)用才會(huì)獲得的,而 cid 是個(gè)推SDK 回調(diào)的,沒(méi)啥說(shuō)的,那就 “注冊(cè)登錄-創(chuàng)建應(yīng)用-獲取配置” 三連擊
"/>
登入成功后,點(diǎn)擊我的應(yīng)用進(jìn)入,再接著點(diǎn)擊右上角的《創(chuàng)建應(yīng)用》就可以創(chuàng)建屬于自己的應(yīng)用了,因?yàn)槲乙呀?jīng)創(chuàng)建完成,所以此處有城墻一樣厚的馬賽克????????????
"/>
填寫自身 APP 的基礎(chǔ)信息
"/>
敲黑板?。。?,iOS 是默認(rèn)不勾選的,聽說(shuō) iOS 有自帶的推送系統(tǒng)?先不管了,勾上再說(shuō),他們愛(ài)用不用。
由于我已經(jīng)注冊(cè)完成了,填完后的界面就要靠大家自行腦補(bǔ)了。應(yīng)用創(chuàng)建成功后,就可以查看我們創(chuàng)建的 APP 所綁定的配置信息了。
"/>
看到這里,我終于知道了之前 Demo 里面的那些配置信息是哪里來(lái)的了,為了保證我這些參數(shù)是有效的, 我還來(lái)了一波騷操作:
把 Demo 里面的工程的包名換成自己創(chuàng)建 APP 的包名,appid等信息也進(jìn)行了替換,發(fā)現(xiàn)成功拿到了 cid
,問(wèn)了下他們技術(shù)支持,大概意思是
只要拿到 cid,集成就完成了 90 %?。。?,鳥弟我激動(dòng)的搓起了小手。后面的思路就清晰了,無(wú)非是把 Demo 里東西拷到自己的項(xiàng)目里面就完事了嘛。
我使用 Maven 的方式集成了 2.13.2.0 版本的 SDK,選用 Maven是為了方(偷)便(懶)的集成!如果是選擇手動(dòng)集成的, 請(qǐng)瘋狂戳我 先看下他們的資料包的內(nèi)容
"/>
看這個(gè)資料包,發(fā)現(xiàn)要導(dǎo)入的東西還是蠻多的,
各種資源,我選擇了 Maven 集成,那么 jar 包& so 就無(wú)需導(dǎo)入了
allprojects { repositories { maven { url 'http://mvn.gt.igexin.com/nexus/content/repositories/releases' } } } 復(fù)制代碼
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.getui:sdk:2.13.2.0' } 復(fù)制代碼
依葫蘆畫瓢,這里就直接從 demo 那邊拷過(guò)來(lái)就行了 千萬(wàn)千萬(wàn)要小心,認(rèn)真核對(duì)每一個(gè)參數(shù),如果出現(xiàn)空格或者 Appid 與 AppKey寫反這類的 低級(jí)錯(cuò)誤真的要檢查到哭????????????
manifestPlaceholders = [ GETUI_APP_ID : "你的 APPID", GETUI_APP_KEY : "你的 APP_KEY", GETUI_APP_SECRET : "你的 APP_SECRET" ] 復(fù)制代碼
千萬(wàn)千萬(wàn)別忘了,我之前就在這個(gè)地方踩了坑,使用 maven 集成就不再需要 so 文件,切記!
可選可不選的權(quán)限,我這邊是寫上了,因?yàn)槲翼?xiàng)目中正好也需要用到這些權(quán)限,美滋滋~
<!-- 支持iBeancon 需要藍(lán)牙權(quán)限 --> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <!-- 支持個(gè)推3.0 電子圍欄功能 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 復(fù)制代碼
Demo 里面還配置了自定義的 service,我也搞了后,官網(wǎng)上有這么一句話
為了讓推送服務(wù)在部分主流機(jī)型上更穩(wěn)定運(yùn)行,從2.9.5.0版本開始,個(gè)推支持第三方應(yīng)用配置使用自定義Service來(lái)作為推送服務(wù)運(yùn)行的載體
都這么說(shuō)了,鳥弟我二話不說(shuō)就 new 一個(gè)自定義服務(wù),進(jìn)行空實(shí)現(xiàn)即可
package com.xinwenwang.xy; import com.igexin.sdk.PushService; public class XyPushService extends PushService { } 復(fù)制代碼
新建的 service 千萬(wàn)別忘了把新建的 service 注冊(cè)到 AndroidManifest.xml 中,多么痛的領(lǐng)悟
<service android:name="com.xxxx.yyyy.XyPushService" android:exported="true" android:label="PushService" android:process=":pushservice"> </service> 復(fù)制代碼
深入一想也可以理解為啥要加個(gè)空實(shí)現(xiàn)的 service,就像集成微信分享一樣,微信分享也要求繼承一個(gè)指定的 activity。
這么一步步的走下來(lái),要配置挺多東西的,終于要開始初始化 SDK 了 ?????♀??????♀??????♀?
com.igexin.sdk.PushManager.getInstance().initialize(getApplicationContext(), com.xxxx.yyyy.XyPushService.class); 復(fù)制代碼
我這邊是在開屏頁(yè)初始化個(gè)推推送的,大家可以隨意,只要在 activity 初始化即可, 建議是初始化越早越好
那么問(wèn)題來(lái)了,搞了上面這么多東西,推送的消息或者透?jìng)魇窃趺磦€(gè)接收法呢?一頭霧水有木有!我又跑回去看了看 Demo,發(fā)現(xiàn)還有個(gè)叫 DemoIntentService 的玩意,打開一看里面有很多很多的回調(diào),鳥哥說(shuō)的話果然帶勁呀, Demo 理解透,項(xiàng)目集成快! 建議大家直接把 Demo 中的 DemoIntentService 拷到自己的項(xiàng)目中,如果需要修改一些DemoIntentService 里面的內(nèi)容,自便哈。記得修改個(gè)名字,不然放在自己的項(xiàng)目里面真的太 low 了!我暫名為 XyPushIntentService。
<!-- 用戶自定義服務(wù)繼承自GTIntentService,作為SDK與APP橋梁服務(wù),用來(lái)接收各種消息和命令回復(fù)--> <service android:name=".XyPushIntentService" android:permission="android.permission.BIND_JOB_SERVICE"/> 復(fù)制代碼
// XyPushIntentService 為第三方自定義的推送服務(wù)事件接收類 PushManager.getInstance().registerPushIntentService(getApplicationContext(), XyPushIntentService.class); 復(fù)制代碼
總算集成完了,導(dǎo)入上述東西需要細(xì)心些哈,漏了一步有的你難受的。 項(xiàng)目跑起來(lái)后,在 XyPushIntentService 會(huì)有 cid 的回調(diào),最直觀的方法是在 logcat 里面輸入 clientid ,就可以看到在控制臺(tái)輸出日志了, 這個(gè) clientID 相當(dāng)于此 APP 在該設(shè)備上的唯一識(shí)別碼。
"/>
最后一步肯定是創(chuàng)建通知了。
"/>
"/>
這邊只是創(chuàng)建了一個(gè)最最最簡(jiǎn)單的樣式僅供參考,我看這界面上的功能估計(jì)可以滿足各種運(yùn)營(yíng)的玩法了,我這邊就不獻(xiàn)丑了:)。 推送測(cè)試消息的時(shí)候,應(yīng)用一定要在前臺(tái),在前臺(tái),在前臺(tái),重要的事情說(shuō)三遍
#尾聲 首次集成這類大型 SDK 讓我意想不到的順利,我和我的小伙伴們都????驚呆了????,后面我再仔細(xì)閱讀了下個(gè)推的文檔,他們家的功能還是很齊全的,我僅是進(jìn)行了最基礎(chǔ)的集成而已,不過(guò)也可以滿足產(chǎn)品與運(yùn)營(yíng)的需求了。不得不提一句,他們的技術(shù)支持服務(wù)確實(shí)夠勁(此處確實(shí)是一條廣告實(shí)錘了~),回復(fù)的快而準(zhǔn)?,F(xiàn)在我得趕緊去寫 Bug 了,告辭????????????~~~
原文鏈接: blog.csdn.net/u013651405/… 作者:吃飽了想睡
行業(yè)前沿、移動(dòng)開發(fā)、數(shù)據(jù)建模等干貨內(nèi)容,盡在公眾號(hào):個(gè)推技術(shù)學(xué)院
分享文章:震驚!安卓推送SDK集成居然如此簡(jiǎn)單!-創(chuàng)新互聯(lián)
鏈接分享:http://aaarwkj.com/article18/dijegp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、自適應(yīng)網(wǎng)站、微信公眾號(hào)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容