您好,登錄后才能下訂單哦!
公司準(zhǔn)備采用個(gè)推作為第三方推送平臺(tái),我作為客戶端的頭號小鳥,掐指一算已經(jīng)畢業(yè) 0.1 年了,Leader 準(zhǔn)備把這個(gè)簡單而又獨(dú)立的功能點(diǎn)交給我來處理,我緊張兮兮的打開 官網(wǎng)集成文檔 學(xué)習(xí)了起來。其實(shí)早在自己大二的時(shí)候就集成過個(gè)推 SDK,溜達(dá)一圈又回來集成個(gè)推推送SDK了,發(fā)現(xiàn)現(xiàn)在的個(gè)推 SDK 與當(dāng)年相比,集成起來真的方便多了。這次集成的是Android推送SDK,希望這篇文章,可以讓同學(xué)們可以更加快捷的集成個(gè)推推送。
cdn.xitu.io/2019/8/27/16cd2c41d4126fba?imageView2/0/w/1280/h/960/format/webp/ignore-error/1">
我的師傅大鳥哥告訴我,集成各類 SDK 的第一步驟都是下載個(gè) Demo,先把 Demo 跑起來看看是什么鬼。咱也不敢問,咱也不敢說,先去 下載個(gè)Demo玩玩。我選擇的是國內(nèi)版本的個(gè)推 SDK,大家可以自行選擇要下載的版本。使用 AS 3.1 把 Getui_SDK_Demo_AS_maven 這個(gè)工程直接運(yùn)行起來,出現(xiàn)了下面這個(gè)界面(此處已經(jīng)對我個(gè)人參數(shù)進(jìn)行了手動(dòng)馬賽克)。
"/> 好了,按我大鳥哥的意思至少 demo 已經(jīng)成功運(yùn)行起來了,接下去就是去把上述的 APPID,APPKey 等參數(shù)換成自己的,那么這些參數(shù)又是怎么來的呢?
看完 Demo 后,慌兮兮打開官網(wǎng)集成文檔,原來那些參數(shù)是需要?jiǎng)?chuàng)建應(yīng)用才會(huì)獲得的,而 cid 是個(gè)推SDK 回調(diào)的,沒啥說的,那就 “注冊登錄-創(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)不勾選的,聽說 iOS 有自帶的推送系統(tǒng)?先不管了,勾上再說,他們愛用不用。
由于我已經(jīng)注冊完成了,填完后的界面就要靠大家自行腦補(bǔ)了。應(yīng)用創(chuàng)建成功后,就可以查看我們創(chuàng)建的 APP 所綁定的配置信息了。
"/> 看到這里,我終于知道了之前 Demo 里面的那些配置信息是哪里來的了,為了保證我這些參數(shù)是有效的, 我還來了一波騷操作: 把 Demo 里面的工程的包名換成自己創(chuàng)建 APP 的包名,appid等信息也進(jìn)行了替換,發(fā)現(xiàn)成功拿到了 cid ,問了下他們技術(shù)支持,大概意思是 只要拿到 cid,集成就完成了 90 %!?。?/span> ,鳥弟我激動(dòng)的搓起了小手。后面的思路就清晰了,無非是把 Demo 里東西拷到自己的項(xiàng)目里面就完事了嘛。
我使用 Maven 的方式集成了 2.13.2.0 版本的 SDK,選用 Maven是為了方(偷)便(懶)的集成!如果是選擇手動(dòng)集成的, 請瘋狂戳我 先看下他們的資料包的內(nèi)容
"/> 看這個(gè)資料包,發(fā)現(xiàn)要導(dǎo)入的東西還是蠻多的, 各種資源,我選擇了 Maven 集成,那么 jar 包& so 就無需導(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 那邊拷過來就行了 千萬千萬要小心,認(rèn)真核對每一個(gè)參數(shù),如果出現(xiàn)空格或者 Appid 與 AppKey寫反這類的 低級錯(cuò)誤真的要檢查到哭????????????
manifestPlaceholders = [ GETUI_APP_ID : "你的 APPID", GETUI_APP_KEY : "你的 APP_KEY", GETUI_APP_SECRET : "你的 APP_SECRET" ] 復(fù)制代碼
千萬千萬別忘了,我之前就在這個(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來作為推送服務(wù)運(yùn)行的載體
都這么說了,鳥弟我二話不說就 new 一個(gè)自定義服務(wù),進(jìn)行空實(shí)現(xiàn)即可
package com.xinwenwang.xy; import com.igexin.sdk.PushService; public class XyPushService extends PushService { } 復(fù)制代碼
新建的 service 千萬別忘了把新建的 service 注冊到 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。
這么一步步的走下來,要配置挺多東西的,終于要開始初始化 SDK 了 ?????♀??????♀??????♀?
com.igexin.sdk.PushManager.getInstance().initialize(getApplicationContext(), com.xxxx.yyyy.XyPushService.class); 復(fù)制代碼
我這邊是在開屏頁初始化個(gè)推推送的,大家可以隨意,只要在 activity 初始化即可, 建議是初始化越早越好
那么問題來了,搞了上面這么多東西,推送的消息或者透傳是怎么個(gè)接收法呢?一頭霧水有木有!我又跑回去看了看 Demo,發(fā)現(xiàn)還有個(gè)叫 DemoIntentService 的玩意,打開一看里面有很多很多的回調(diào),鳥哥說的話果然帶勁呀, Demo 理解透,項(xiàng)目集成快! 建議大家直接把 Demo 中的 DemoIntentService 拷到自己的項(xiàng)目中,如果需要修改一些DemoIntentService 里面的內(nèi)容,自便哈。記得修改個(gè)名字,不然放在自己的項(xiàng)目里面真的太 low 了!我暫名為 XyPushIntentService。
<!-- 用戶自定義服務(wù)繼承自GTIntentService,作為SDK與APP橋梁服務(wù),用來接收各種消息和命令回復(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)目跑起來后,在 XyPushIntentService 會(huì)有 cid 的回調(diào),最直觀的方法是在 logcat 里面輸入 clientid ,就可以看到在控制臺(tái)輸出日志了, 這個(gè) clientID 相當(dāng)于此 APP 在該設(shè)備上的唯一識別碼。
"/> 最后一步肯定是創(chuàng)建通知了。 "/>
"/>
這邊只是創(chuàng)建了一個(gè)最最最簡單的樣式僅供參考,我看這界面上的功能估計(jì)可以滿足各種運(yùn)營的玩法了,我這邊就不獻(xiàn)丑了:)。 推送測試消息的時(shí)候,應(yīng)用一定要在前臺(tái),在前臺(tái),在前臺(tái),重要的事情說三遍
#尾聲 首次集成這類大型 SDK 讓我意想不到的順利,我和我的小伙伴們都????驚呆了????,后面我再仔細(xì)閱讀了下個(gè)推的文檔,他們家的功能還是很齊全的,我僅是進(jìn)行了最基礎(chǔ)的集成而已,不過也可以滿足產(chǎn)品與運(yùn)營的需求了。不得不提一句,他們的技術(shù)支持服務(wù)確實(shí)夠勁(此處確實(shí)是一條廣告實(shí)錘了~),回復(fù)的快而準(zhǔn)?,F(xiàn)在我得趕緊去寫 Bug 了,告辭????????????~~~
原文鏈接: blog.csdn.net/u013651405/… 作者:吃飽了想睡
行業(yè)前沿、移動(dòng)開發(fā)、數(shù)據(jù)建模等干貨內(nèi)容,盡在公眾號:個(gè)推技術(shù)學(xué)院
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。