Android 消息推送:第三方消息推送平臺 詳細解析

前言

  • 消息推送在 Android 開發中應用的場景是愈來愈多了,好比說電商產品進行活動宣傳、資訊類產品進行新聞推送等等,以下圖:

推送消息截圖

  • 本文將介紹 Android 中實現消息推送的第三方推送的詳細解決方案

閱讀本文前,建議先閱讀我寫的文章:史上最全解析Android消息推送解決方案安全


目錄

目錄


1. 主流的第三方推送平臺分類

  • 手機廠商類:小米推送、華爲推送。
  • 第三方平臺類:友盟推送、極光推送、雲巴(基於MQTT)
  • BAT大廠的平臺推送:阿里雲移動推送、騰訊信鴿推送、百度雲推送

2. 對比其餘推送方式的特色

其餘推送方式還有:C2DM、輪詢、SMS、MQTT協議、XMPP協議等等,相對於這些推送方式,第三方推送方式的特色分別是:服務器

  • 優勢:微信

    1. 成本低 上述的推送大多數是免費的,假如本身實現則消耗過多資源(開發成本和後臺管理、統計成本)
    2. 消息到達率高 若是一個手機裏有多個App使用了同一家推送服務,那麼這些App將共用一條消息通道,即便你家的App推送服務被殺死了,那麼只要用戶打開了其餘集成該推送服務的App,你家的推送就能到達用戶
  • 缺點app

    1. 安全性低 使用別人的服務器,因此你懂的。
    2. 服務會被殺死 因爲Android系統的機制,後臺推送 Service 會被各類主動的或是被動的行爲給殺死,而服務一旦被殺死,意味着就接收不到推送消息。

3. 第三方推送服務方式的特色

  • 第三方服務基本都具有免費、和到達率高的特色
  • 那麼應該如何選擇呢?咱們來分別看一下第三方推送各類方式的優勢:

3.1 手機廠商推送

請記住一個潛規則:操做系統是不會殺死屬於本身品牌的推送服務。post

  1. 手機廠商的推送服務在自家的手機上屬於系統級別的服務,這意味着系統不會殺死自家的推送服務
  2. 好比說,Android原生系統是不會殺死C2DM消息推送服務,MIUI系統是不會殺死小米的推送服務。

當今市場上的Android手機系統份額最高是MIUI系統,即小米(具體排名請看http://www.umindex.com/)阿里雲

由於:免費、到達率高且在Android系統市場份額第一的MIUI系統上不被殺死。因此,若是要選擇手機廠商的推送服務,請選擇小米推送做爲第三方平臺實現推送服務操作系統

下面一些應用能夠從側面來證實個人推斷:3d

  • 騰訊新聞使用的小米推送,沒有使用本身家的信鴿推送
  • 淘寶使用了自家的阿里雲推送,同時還集成了小米推送
  • 百度視頻愛奇藝使用的是小米推送,沒有用自家的百度推送
  • 官網截圖 - 集成應用:

集成應用

  1. 若是但願進一步提升推送的效果,其實能夠集成多個手機廠商的推送服務
  2. 好比小米渠道用小米推送,華爲渠道用華爲推送,但這樣的實現成本會大一些

3.2 第三方平臺類

請記住一個規則:推送系統會共享一條推送渠道code

  1. 這意味着假設你接入了友盟推送,而剛好今日頭條也接入了友盟。
  2. 有一天你的App被殺死了,但這時用戶啓動了今日頭條,那麼推送系統也就會經過共享的推送通道順便把你推送消息送達到手機上,而後還可能把你的進程也喚醒(被「保活」了)。

因此說,關於如何選擇第三方平臺類的推送,推送平臺的規模效應就很重要了。 那如何得知他們的規模和市場份額呢?按我的經驗,主要看兩點:cdn

  • 問內部的朋友。
  • 看推送平臺的合做客戶裏有哪些大的app - 參考對應官網的合做案例

3.3 BAT大廠的推送

BAT大廠其實並無什麼優點,同時謹記:

  • 不要覺得用了騰訊信鴿推送,就能占上微信的光保證你的App永遠內部被殺死。
  • 說個題外話,手機淘寶除了自家的阿里雲的移動推送,同時也使用其它的第三方推送平臺啊(好比友盟推送)。

4. 如何選擇第三方平臺推送服務?

主要從用戶類別+實現成本+渠道來選擇不一樣的使用場景

  1. 若是用戶羣體精準(使用小米手機或華爲手機居多),能夠考慮只集成對應手機廠商的推送;

注意:單一的手機廠商也能工做,好比小米推送在非小米手機上固然也能工做,只不過不是系統級別的服務了,容易被殺死。

  1. 若是用戶羣體普遍、但願實現成本低,能夠考慮只使用單一第三方平臺類的推送(極光、友盟blabla,選一個規模效應最大的)

  2. 若是用戶羣體普遍、不在乎實現成本,我的建議:

  • 對於小米手機,使用小米推送;
  • 對於華爲手機,使用華爲推送;
  • 對於其餘手機,只使用單一第三方平臺類的推送(極光、友盟blabla,選一個規模效應最大的)

讓不一樣的推送運行在各自擅長的環境裏,最大化實現推送的到達率和產品的存活率

你們能夠根據本身的使用場景來進行消息推送平臺的選擇。


5. 推送消息類別的選擇

5.1 推送消息的類別

一般第三方推送平臺都支持兩種推送消息類型:通知欄消息和透傳消息。

  • 通知欄消息:該類消息在被送達用戶的設備後,直接以系統通知欄的形式展現給用戶

不會繼續被傳遞到App

  • 透傳消息:該類消息在被送達用戶的設備後,還會繼續傳遞到App
  1. 經過回調App的某個BroadcastReceiver的形式將消息傳遞到App內部。而後由App決定如何處理和顯示這個消息。
  2. 因此透傳消息不必定會以系統通知欄的形式進行推送,由程序猿自定義

5.2 消息類別的區別與特色

  • 兩者的區別在於:透傳消息在整個消息傳遞過程當中比通知欄消息多了一步-傳遞到App
  • 通知欄消息的優勢:送達率高 由於透傳消息在整個消息傳遞過程當中比通知欄消息多了一步-傳遞到App,所以透傳消息就增長一些被系統限制的機率,給系統殺死的機率就高一些,因此說,通知欄消息比透傳消息應該能提供更好的送達率。

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

  1. 在一些 Android 系統(如 MIUI)中,受到系統自啓動管理設置的限制,應用不能在後臺自啓動
  2. 在這類系統中,若是在發送消息的時候對應的應用沒有被啓動,透傳類消息將不能順利送達。
  3. 所以,對於對送達率要求很高的消息,建議儘可能採用通知欄提醒的方式推送消息
  • 透傳消息的優勢:對消息操做程度高 & 自定義程度高
  1. 提供了對消息數據的更靈活的操縱能力。

App若是僅僅經過通知欄消息,是沒法接觸到消息數據自己的。

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

因此你們能夠根據不一樣的使用場景來對推送消息類別進行選擇了。


6. 總結


請點贊!由於你的鼓勵是我寫做的最大動力!


歡迎關注carson_ho的微信公衆號

示意圖

示意圖
相關文章
相關標籤/搜索