『技術(shù)分享』—— 我和 Android 推送的時(shí)間簡史

2017 年 3 月 3 日

「極光」跟我的淵源真的是極深的,說到極光,不得不追溯到 2017 年 3 月 3 日,當(dāng)時(shí)正做畢設(shè)項(xiàng)目趣聞?;镜念A(yù)期功能已經(jīng)實(shí)現(xiàn)了,開始考慮集成推送功能,鑒于水平和時(shí)間的約束,決定還是集成第三方推送最為保險(xiǎn)。

然后百度了一下「第三方推送」,映入眼簾的便是「極光推送」,毫不猶豫的選擇了它。在集成過程中也是比較順利,在收到第一條推送后,喜悅的心情無以言表,不得不說大平臺(tái)就是強(qiáng)。

2017 年 3 月 7 日

3 月 7 日,找到了第一份實(shí)習(xí)工作(畢業(yè)后也在這里轉(zhuǎn)了正),坐標(biāo)「南京」。入職不久,老大開始讓我接手公司項(xiàng)目中的推送模塊。然后我把公司推送的邏輯大致看了一下,無論是設(shè)置 tag、或者是處理通知欄點(diǎn)擊事件處理、還是自定義消息推送,對(duì)于剛?cè)肼毜奈沂窍喈?dāng)?shù)膹?fù)雜。畢竟在之前集成的畢設(shè)項(xiàng)目中,邏輯處理很少,只是簡單的收到通知、點(diǎn)擊并打開應(yīng)用...

邏輯整理的差不多,開始了主要的任務(wù)--升級(jí)到新版的極光推送。

當(dāng)我看到項(xiàng)目極光當(dāng)前的版本,硬是被嚇一跳。

當(dāng)前版本

我記得當(dāng)時(shí)極光已經(jīng)到 3.0.0+ 的版本了,看來升級(jí)果斷是有必要的!還有一點(diǎn),我們公司是「極光」的 VIP,在原來推送的基礎(chǔ)上,多了一項(xiàng)非常強(qiáng)大的功能!集成產(chǎn)商的推送(小米、華為和魅族)。

這意味著,如果在「小米、華為和魅族」的大部分的設(shè)備上,推送不再走極光的通道,而是走設(shè)備的產(chǎn)商通道。

什么意思呢?就拿公司老版本的項(xiàng)目來說,不僅集成了極光推送還集成了小米推送,不僅服務(wù)端需要推送兩份推送,就連客戶端自己都要對(duì)設(shè)備的類型進(jìn)行判斷,如果是「小米」設(shè)備就調(diào)用「小米」的接口。那如果集成了產(chǎn)商推送,就不需要此操作,你只需提供應(yīng)用的 APPID 等其他配置信息即可,華為和魅族同樣!

那么走產(chǎn)商通道又意味著什么呢?有集成過推送的小伙伴應(yīng)該知道,推送能準(zhǔn)確到達(dá)在于一個(gè)長連接,假如應(yīng)用的進(jìn)程被殺死,推送也便收不到。假如集成了產(chǎn)商的推送,即便進(jìn)程被殺死,推送還是可以正常收到的,不過僅限于基本的推送,不包括自定義推送。

這個(gè)升級(jí)的過程也是相當(dāng)?shù)目部溃矣浀眠@部分的功能也是「極光」的測試功能,正好我們集成過來一并測試...不過還有有一位熱心的小姐姐,習(xí)慣稱之為「大俠」!這個(gè)稱號(hào)是當(dāng)時(shí)她的昵稱,一直都這么叫過來的。每次遇到問題都能不厭其煩的為我解惑。

其中讓我印象最為深刻的,是那天公司項(xiàng)目已經(jīng)到了發(fā)版周期的最后兩天,在華為的設(shè)備上推送沒有收到。這可把我急的,第一時(shí)間就是找「大俠」幫忙,可能因?yàn)槲以?QQ 上表達(dá)的不是很清楚,小姐姐看起來比我 還著急,直接讓我跟她通電話討論一下具體的原因,這讓我意想不到。還好最后是解決了問題,在此說聲 謝謝。

2017年 9月19日

9月 19 日,工作半年了,打算和大神同事一起維護(hù)一個(gè)開源項(xiàng)目,于是就有了 WeaponApp 的誕生,目前也快到 600 的贊了。

WeaponApp

當(dāng)然,推送的功能也是少不了的,由于有了前面的經(jīng)驗(yàn),集成起來也是相當(dāng)順手,不過因?yàn)槭莻€(gè)人項(xiàng)目就沒有考慮,后來同事自學(xué)了服務(wù)端,順便也把服務(wù)端的極光推送集成了,感興趣的話可以把項(xiàng)目 clone 下來。

在這個(gè)項(xiàng)目中初次嘗試了集成「極光IM」,官方的接口也是很詳細(xì),并且還有自己的用戶系統(tǒng),登錄和注冊(cè)不需要自己實(shí)現(xiàn)了,不過目前的用戶還是很少...

所有用戶

2017年 10 月 26 日

10 月 26 日,咱們公司另一交易項(xiàng)目「原油」開始進(jìn)行大版本的升級(jí),基本上屬于重頭做起。不用多說,推送的部分還是由我負(fù)責(zé),鑒于又是「極光」的 VIP,直接將「貴金屬」項(xiàng)目的推送部分挪過來,去除不需要的部分,修改一些基礎(chǔ)的配置,最后也是順利的完成了。

不知不覺中,推送功能已經(jīng)在 4 個(gè)項(xiàng)目中集成了:

個(gè)人項(xiàng)目

公司的就不方便列出來了,加在一塊也有數(shù)十萬的用戶了(絕大部分是公司)...整體的過程還是很順利的,無論是集成的步驟,還是后續(xù)的服務(wù)都很完美,這可能就是「極光」做的那么大的原因吧。

推送一覽

贅述

說完「極光」與我的淵源,接下來就大概說一下集成的過程。

官網(wǎng)已經(jīng)有詳細(xì)的集成介紹,我就不贅述了。官網(wǎng)集成,只是總結(jié)一下集成的步驟,一共三步:

  1. 添加依賴
    手動(dòng)集成,需要拷貝相應(yīng)的 so 文件到制定的目錄
    自動(dòng)導(dǎo)入,Android Studio 直接添加依賴
  2. 添加配置文件
    拷貝官網(wǎng)AndroidManifest 數(shù)據(jù)到項(xiàng)目 app module 下的 AndroidManifest 中,并更換對(duì)應(yīng)的包名和 APPID。
    調(diào)用「極光」接口進(jìn)行初始化
  3. 添加接收器
    創(chuàng)建自定義 Receiver 用于處理推送的消息。

一般這樣集成就可以正常收到推送了。如果遇到問題也別慌,冷靜下來。從我的經(jīng)驗(yàn)來看,最好在每個(gè)關(guān)鍵的地方打上日志,方便運(yùn)行時(shí)候查看和后面遇到問題方便定位。還有就是日志的 TAG,最好和極光的日志過濾規(guī)則保持一致,比如 JPush。

當(dāng)你有下面的日志輸出,就證明已經(jīng)集成成功了!

[JPushInterface] action:init
.......
[PushService] Login succeed!

成功的日志只有這一個(gè),錯(cuò)誤的情況就各種各樣了,可以對(duì)照之前的日志進(jìn)行分析,比如:

初始化失敗

很有可能是因?yàn)?so 文件加載失敗...

還有好多東西,我后續(xù)在添加吧,感興趣的小伙伴可以很我交流交流,希望能幫到你!

「本文系極光征文 | 寫寫文章就能贏 Filco,豈不美滋滋的參賽文章」

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評(píng)論 25 708
  • 最初了解到極光,是看到極光在知乎發(fā)的一篇帖子,關(guān)于他們開源的 IM 項(xiàng)目:Aurora IMUI的,從此知道了...
    碳酸氫鈉x閱讀 6,798評(píng)論 56 135
  • 推送技術(shù)產(chǎn)生場景: --服務(wù)器端主動(dòng)性: 客戶端與服務(wù)器交互都是客戶端主動(dòng)的, 服務(wù)器一般不能主動(dòng)與客戶端進(jìn)行數(shù)據(jù)...
    原軍鋒閱讀 35,217評(píng)論 4 60
  • 雨后 天邊的晚霞在黃昏里笑了 笑紅了半天的云彩 小河里的水也笑了 和天成了一色 岸邊的垂柳笑了 招搖著裹了金邊的玉...
    Harvest收獲閱讀 626評(píng)論 60 78
  • 去年暑假寫的:) 我25歲之前唯一養(yǎng)過的植物是綠豆。丟進(jìn)水里它就會(huì)發(fā)芽,當(dāng)它長到5厘米左右葉子出來了,我從來都不知...
    溶溶月色淡淡清風(fēng)閱讀 652評(píng)論 0 0

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