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)時(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 的贊了。

當(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)目中集成了:

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

贅述
說完「極光」與我的淵源,接下來就大概說一下集成的過程。
官網(wǎng)已經(jīng)有詳細(xì)的集成介紹,我就不贅述了。官網(wǎng)集成,只是總結(jié)一下集成的步驟,一共三步:
- 添加依賴
手動(dòng)集成,需要拷貝相應(yīng)的so文件到制定的目錄
自動(dòng)導(dǎo)入,Android Studio直接添加依賴 - 添加配置文件
拷貝官網(wǎng)的AndroidManifest數(shù)據(jù)到項(xiàng)目app module下的AndroidManifest中,并更換對(duì)應(yīng)的包名和APPID。
調(diào)用「極光」接口進(jìn)行初始化 - 添加接收器
創(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,豈不美滋滋的參賽文章」