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

Carson_Ho發表於2019-03-04

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

前言

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

Android 訊息推送:第三方訊息推送平臺 詳細解析
推送訊息截圖


目錄

Android 訊息推送:第三方訊息推送平臺 詳細解析
目錄


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

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

2. 對比其他推送方式的特點

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

  • 優點:
    1. 成本低
      上述的推送大多數是免費的,假如自己實現則消耗過多資源(開發成本和後臺管理、統計成本)
    2. 訊息到達率高
      如果一個手機裡有多個App使用了同一家推送服務,那麼這些App將共用一條訊息通道,即使你家的App推送服務被殺死了,那麼只要使用者開啟了其他整合該推送服務的App,你家的推送就能到達使用者
  • 缺點
    1. 安全性低
      使用別人的伺服器,所以你懂的。
    2. 服務會被殺死
      由於Android系統的機制,後臺推送 Service 會被各種主動的或是被動的行為給殺死,而服務一旦被殺死,意味著就接收不到推送訊息。

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

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

3.1 手機廠商推送

請記住一個潛規則:作業系統是不會殺死屬於自己品牌的推送服務。

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

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

因為:免費、到達率高且在Android系統市場份額第一的MIUI系統上不被殺死。所以,如果要選擇手機廠商的推送服務,請選擇小米推送作為第三方平臺實現推送服務

下面一些應用可以從側面來證明我的推斷:

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

Android 訊息推送:第三方訊息推送平臺 詳細解析
整合應用

  1. 如果希望進一步提高推送的效果,其實可以整合多個手機廠商的推送服務
  2. 比如小米渠道用小米推送,華為渠道用華為推送,但這樣的實現成本會大一些

3.2 第三方平臺類

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

  1. 這意味著假設你接入了友盟推送,而恰好今日頭條也接入了友盟。
  2. 有一天你的App被殺死了,但這時使用者啟動了今日頭條,那麼推送系統也就會通過共享的推送通道順便把你推送訊息送達到手機上,然後還可能把你的程式也喚醒(被“保活”了)。

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

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

3.3 BAT大廠的推送

BAT大廠其實並沒有什麼優勢,同時謹記:

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

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

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

  1. 如果使用者群體精準(使用小米手機或華為手機居多),可以考慮只整合對應手機廠商的推送;

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

  2. 如果使用者群體廣泛、希望實現成本低,可以考慮只使用單一第三方平臺類的推送(極光、友盟blabla,選一個規模效應最大的)

  3. 如果使用者群體廣泛、不在意實現成本,個人建議:

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

      讓不同的推送執行在各自擅長的環境裡,最大化實現推送的到達率和產品的存活率

大家可以根據自己的使用場景來進行訊息推送平臺的選擇。


5. 推送訊息類別的選擇

5.1 推送訊息的類別

通常第三方推送平臺都支援兩種推送訊息型別:通知欄訊息和透傳訊息。

  • 通知欄訊息:該類訊息在被送達使用者的裝置後,直接以系統通知欄的形式展示給使用者

    不會繼續被傳遞到App

  • 透傳訊息:該類訊息在被送達使用者的裝置後,還會繼續傳遞到App

    1. 通過回撥App的某個BroadcastReceiver的形式將訊息傳遞到App內部。然後由App決定如何處理和顯示這個訊息。
    2. 所以透傳訊息不一定會以系統通知欄的形式進行推送,由程式猿自定義

5.2 訊息類別的區別與特點

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

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

    1. 在一些 Android 系統(如 MIUI)中,受到系統自啟動管理設定的限制,應用不能在後臺自啟動
    2. 在這類系統中,如果在傳送訊息的時候對應的應用沒有被啟動,透傳類訊息將不能順利送達。
    3. 因此,對於對送達率要求很高的訊息,建議儘量採用通知欄提醒的方式推送訊息
  • 透傳訊息的優點:對訊息操作程度高 & 自定義程度高

    1. 提供了對訊息資料的更靈活的操縱能力。

      App如果僅僅通過通知欄訊息,是無法接觸到訊息資料本身的。

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

所以大家可以根據不同的使用場景來對推送訊息類別進行選擇了。


6. 總結


請點贊!因為你的鼓勵是我寫作的最大動力!

相關文章