
前言
- 消息推送在Android開發(fā)中應(yīng)用的場(chǎng)景是越來越多了,比如說電商產(chǎn)品進(jìn)行活動(dòng)宣傳、資訊類產(chǎn)品進(jìn)行新聞推送等等,如下圖:

- 本文將介紹Android中實(shí)現(xiàn)消息推送的第三方推送的詳細(xì)解決方案
閱讀本文前,建議先閱讀我寫的文章:史上最全解析Android消息推送解決方案
目錄

1. 主流的第三方推送平臺(tái)分類
- 手機(jī)廠商類:小米推送、華為推送。
- 第三方平臺(tái)類:友盟推送、極光推送、云巴(基于MQTT)
- BAT大廠的平臺(tái)推送:阿里云移動(dòng)推送、騰訊信鴿推送、百度云推送
2. 對(duì)比其他推送方式的特點(diǎn)
其他推送方式還有:C2DM、輪詢、SMS、MQTT協(xié)議、XMPP協(xié)議等等,相對(duì)于這些推送方式,第三方推送方式的特點(diǎn)分別是:
2.1 優(yōu)點(diǎn):
- 成本低
上述的推送大多數(shù)是免費(fèi)的,假如自己實(shí)現(xiàn)則消耗過多資源(開發(fā)成本和后臺(tái)管理、統(tǒng)計(jì)成本) - 消息到達(dá)率高
如果一個(gè)手機(jī)里有多個(gè)App使用了同一家推送服務(wù),那么這些App將共用一條消息通道,即使你家的App推送服務(wù)被殺死了,那么只要用戶打開了其他集成該推送服務(wù)的App,你家的推送就能到達(dá)用戶
2.2 缺點(diǎn)
- 安全性低
使用別人的服務(wù)器,所以你懂的。 - 服務(wù)會(huì)被殺死
由于Android系統(tǒng)的機(jī)制,后臺(tái)推送 Service 會(huì)被各種主動(dòng)的或是被動(dòng)的行為給殺死,而服務(wù)一旦被殺死,意味著就接收不到推送消息。
3. 第三方推送服務(wù)方式的特點(diǎn)
- 第三方服務(wù)基本都具備免費(fèi)、和到達(dá)率高的特點(diǎn)
- 那么應(yīng)該如何選擇呢?我們來分別看一下第三方推送各種方式的優(yōu)點(diǎn):
3.1 手機(jī)廠商推送
請(qǐng)記住一個(gè)潛規(guī)則:操作系統(tǒng)是不會(huì)殺死屬于自己品牌的推送服務(wù)。
- 手機(jī)廠商的推送服務(wù)在自家的手機(jī)上屬于系統(tǒng)級(jí)別的服務(wù),這意味著系統(tǒng)不會(huì)殺死自家的推送服務(wù)
- 比如說,Android原生系統(tǒng)是不會(huì)殺死C2DM消息推送服務(wù),MIUI系統(tǒng)是不會(huì)殺死小米的推送服務(wù)。
當(dāng)今市場(chǎng)上的Android手機(jī)系統(tǒng)份額最高是MIUI系統(tǒng),即小米(具體排名請(qǐng)看http://www.umindex.com/)
因?yàn)椋好赓M(fèi)、到達(dá)率高且在Android系統(tǒng)市場(chǎng)份額第一的MIUI系統(tǒng)上不被殺死。所以,如果要選擇手機(jī)廠商的推送服務(wù),請(qǐng)選擇小米推送作為第三方平臺(tái)實(shí)現(xiàn)推送服務(wù)
下面一些應(yīng)用可以從側(cè)面來證明我的推斷:
- 騰訊新聞使用的小米推送,沒有使用自己家的信鴿推送
- 淘寶使用了自家的阿里云推送,同時(shí)還集成了小米推送
- 百度視頻和愛奇藝使用的是小米推送,沒有用自家的百度推送
- 官網(wǎng)截圖 - 集成應(yīng)用:

- 如果希望進(jìn)一步提高推送的效果,其實(shí)可以集成多個(gè)手機(jī)廠商的推送服務(wù)
- 比如小米渠道用小米推送,華為渠道用華為推送,但這樣的實(shí)現(xiàn)成本會(huì)大一些
3.2 第三方平臺(tái)類
請(qǐng)記住一個(gè)規(guī)則:推送系統(tǒng)會(huì)共享一條推送渠道
- 這意味著假設(shè)你接入了友盟推送,而恰好今日頭條也接入了友盟。
- 有一天你的App被殺死了,但這時(shí)用戶啟動(dòng)了今日頭條,那么推送系統(tǒng)也就會(huì)通過共享的推送通道順便把你推送消息送達(dá)到手機(jī)上,然后還可能把你的進(jìn)程也喚醒(被“?;睢绷耍?/li>
所以說,關(guān)于如何選擇第三方平臺(tái)類的推送,推送平臺(tái)的規(guī)模效應(yīng)就很重要了。
那如何得知他們的規(guī)模和市場(chǎng)份額呢?按個(gè)人經(jīng)驗(yàn),主要看兩點(diǎn):
- 問內(nèi)部的朋友。
- 看推送平臺(tái)的合作客戶里有哪些大的app - 參考對(duì)應(yīng)官網(wǎng)的合作案例
3.3 BAT大廠的推送
BAT大廠其實(shí)并沒有什么優(yōu)勢(shì),同時(shí)謹(jǐn)記:
- 不要以為用了騰訊信鴿推送,就能占上微信的光保證你的App永遠(yuǎn)內(nèi)部被殺死。
- 說個(gè)題外話,手機(jī)淘寶除了自家的阿里云的移動(dòng)推送,同時(shí)也使用其它的第三方推送平臺(tái)?。ū热缬衙送扑停?/li>
4. 如何選擇第三方平臺(tái)推送服務(wù)?
選擇因素
用戶群體屬性、實(shí)現(xiàn)成本、渠道具體選擇方案

所以,大家可根據(jù)自己的使用場(chǎng)景來進(jìn)行消息推送平臺(tái)的選擇。
5. 推送消息類別的選擇
5.1 推送消息的類別
通常第三方推送平臺(tái)都支持兩種推送消息類型:通知欄消息和透?jìng)飨ⅰ?/p>
- 通知欄消息:該類消息在被送達(dá)用戶的設(shè)備后,直接以系統(tǒng)通知欄的形式展示給用戶
不會(huì)繼續(xù)被傳遞到App
- 透?jìng)飨ⅲ涸擃愊⒃诒凰瓦_(dá)用戶的設(shè)備后,還會(huì)繼續(xù)傳遞到App
- 通過回調(diào)App的某個(gè)BroadcastReceiver的形式將消息傳遞到App內(nèi)部。然后由App決定如何處理和顯示這個(gè)消息。
- 所以透?jìng)飨⒉灰欢〞?huì)以系統(tǒng)通知欄的形式進(jìn)行推送,由程序猿自定義
5.2 消息類別的區(qū)別與特點(diǎn)
- 二者的區(qū)別在于:透?jìng)飨⒃谡麄€(gè)消息傳遞過程中比通知欄消息多了一步-傳遞到App
- 通知欄消息的優(yōu)點(diǎn):送達(dá)率高
因?yàn)橥競(jìng)飨⒃谡麄€(gè)消息傳遞過程中比通知欄消息多了一步-傳遞到App,因此透?jìng)飨⒕驮黾右恍┍幌到y(tǒng)限制的概率,給系統(tǒng)殺死的概率就高一些,所以說,通知欄消息比透?jìng)飨?yīng)該能提供更好的送達(dá)率。
我們來看下小米推送的官方文檔描述:
- 在一些 Android 系統(tǒng)(如 MIUI)中,受到系統(tǒng)自啟動(dòng)管理設(shè)置的限制,應(yīng)用不能在后臺(tái)自啟動(dòng)
- 在這類系統(tǒng)中,如果在發(fā)送消息的時(shí)候?qū)?yīng)的應(yīng)用沒有被啟動(dòng),透?jìng)黝愊?/strong>將不能順利送達(dá)。
- 因此,對(duì)于對(duì)送達(dá)率要求很高的消息,建議盡量采用通知欄提醒的方式推送消息
- 透?jìng)飨⒌膬?yōu)點(diǎn):對(duì)消息操作程度高 & 自定義程度高
- 提供了對(duì)消息數(shù)據(jù)的更靈活的操縱能力。
App如果僅僅通過通知欄消息,是無法接觸到消息數(shù)據(jù)本身的。
- 可自定義通知提醒的樣式(包括提示樣式、提示形式如聲音等等)
所以大家可以根據(jù)不同的使用場(chǎng)景來對(duì)推送消息類別進(jìn)行選擇了。
6. 總結(jié)
相信大家已經(jīng)非常了解關(guān)于第三方推送的相關(guān)信息。
關(guān)于Android消息推送的其他知識(shí),具體請(qǐng)看:
史上最全解析Android消息推送解決方案
Android消息推送:手把手教你集成小米推送接下來,我會(huì)繼續(xù)介紹具體如何在Android應(yīng)用中集成相應(yīng)的第三方推送功能(小米推送、極光推送、個(gè)推等等),感興趣的同學(xué)可以繼續(xù)關(guān)注本人運(yùn)營(yíng)的
Wechat Public Account:
請(qǐng)點(diǎn)贊!因?yàn)槟愕墓膭?lì)是我寫作的最大動(dòng)力!
相關(guān)文章閱讀
史上最全解析Android消息推送解決方案
Android開發(fā):最全面、最易懂的Android屏幕適配解決方案
Android開發(fā):Handler異步通信機(jī)制全面解析(包含Looper、Message Queue)
Android開發(fā):頂部Tab導(dǎo)航欄實(shí)現(xiàn)(TabLayout+ViewPager+Fragment)
Android開發(fā):底部Tab菜單欄實(shí)現(xiàn)(FragmentTabHost+ViewPager)
Android開發(fā):JSON簡(jiǎn)介及最全面解析方法!
Android開發(fā):XML簡(jiǎn)介及DOM、SAX、PULL解析對(duì)比
歡迎關(guān)注Carson_Ho的簡(jiǎn)書!
不定期分享關(guān)于安卓開發(fā)的干貨,追求短、平、快,但卻不缺深度。
