Android消息推送:第三方消息推送平臺(tái)詳細(xì)解析

前言

  • 消息推送在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):

  1. 成本低
    上述的推送大多數(shù)是免費(fèi)的,假如自己實(shí)現(xiàn)則消耗過多資源(開發(fā)成本和后臺(tái)管理、統(tǒng)計(jì)成本)
  2. 消息到達(dá)率高
    如果一個(gè)手機(jī)里有多個(gè)App使用了同一家推送服務(wù),那么這些App將共用一條消息通道,即使你家的App推送服務(wù)被殺死了,那么只要用戶打開了其他集成該推送服務(wù)的App,你家的推送就能到達(dá)用戶

2.2 缺點(diǎn)

  1. 安全性低
    使用別人的服務(wù)器,所以你懂的。
  2. 服務(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ù)。

  1. 手機(jī)廠商的推送服務(wù)在自家的手機(jī)上屬于系統(tǒng)級(jí)別的服務(wù),這意味著系統(tǒng)不會(huì)殺死自家的推送服務(wù)
  2. 比如說,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)用:
集成應(yīng)用
  1. 如果希望進(jìn)一步提高推送的效果,其實(shí)可以集成多個(gè)手機(jī)廠商的推送服務(wù)
  2. 比如小米渠道用小米推送,華為渠道用華為推送,但這樣的實(shí)現(xiàn)成本會(huì)大一些

3.2 第三方平臺(tái)類

請(qǐng)記住一個(gè)規(guī)則:推送系統(tǒng)會(huì)共享一條推送渠道

  1. 這意味著假設(shè)你接入了友盟推送,而恰好今日頭條也接入了友盟。
  2. 有一天你的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
  1. 通過回調(diào)App的某個(gè)BroadcastReceiver的形式將消息傳遞到App內(nèi)部。然后由App決定如何處理和顯示這個(gè)消息。
  2. 所以透?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á)率。

我們來看下小米推送的官方文檔描述:

  1. 在一些 Android 系統(tǒng)(如 MIUI)中,受到系統(tǒng)自啟動(dòng)管理設(shè)置的限制,應(yīng)用不能在后臺(tái)自啟動(dòng)
  2. 在這類系統(tǒng)中,如果在發(fā)送消息的時(shí)候?qū)?yīng)的應(yīng)用沒有被啟動(dòng),透?jìng)黝愊?/strong>將不能順利送達(dá)。
  3. 因此,對(duì)于對(duì)送達(dá)率要求很高的消息,建議盡量采用通知欄提醒的方式推送消息
  • 透?jìng)飨⒌膬?yōu)點(diǎn):對(duì)消息操作程度高 & 自定義程度高
  1. 提供了對(duì)消息數(shù)據(jù)的更靈活的操縱能力。

App如果僅僅通過通知欄消息,是無法接觸到消息數(shù)據(jù)本身的。

  1. 可自定義通知提醒的樣式(包括提示樣式、提示形式如聲音等等)

所以大家可以根據(jù)不同的使用場(chǎng)景來對(duì)推送消息類別進(jìn)行選擇了。


6. 總結(jié)


請(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ā)的干貨,追求短、平、快,但卻不缺深度

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

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

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