PUSH消息推送的實現原理

7 評論 17210 瀏覽 151 收藏 11 分鐘

編輯導語:如今,push已經成為了我們手機信息流的一種推廣方式,那么push消息推送是如何實現的呢?作者總結了幾種消息推送的類型以及實現原理,一起來看看。

一、消息推送的類型

1. 短信推送

指通過運營商將文本或數字消息傳遞至用戶手機或其他電信終端。它憑借著優秀的發送率和到達率,一度成為最受歡迎的營銷工具之一。

一般企業不太會直接對接移動、聯通、電信來實現短信發送,而是通過中間的服務商將各地區的運營商資源整合后提供統一、便捷的短信服務,這類服務商叫短信服務商,也可叫短信SP。

目前,支持個人短信服務的廠商有阿里云、騰訊云,其他廠商都是需要認證為企業用戶才能使用短信服務平臺。短信供應商根據發送量進行收費,發送越多單價越便宜。

2. 郵件推送

EDM(Email Direct Marketing),即電子郵件營銷。企業可以通過EDM建立同目標顧客的溝通渠道,向其直接傳達相關信息,用來促進銷售。郵件推送具有精準送達、個性化定制、內容格式豐富的特點。亞馬遜就曾憑借優秀的電子郵件營銷出圈。

3. 微信消息推送

截至2022年3月31日,微信及WeChat的合并月活躍賬戶數為12.883億。隨著微信的影響力的增強,越來越多的企業也逐漸重視微信生態的布局,微信消息推送就是其一,它的到達率高、支持精準推送。不足的是,其內容受限于模板,且微信提供的模板數量有限,一個公眾號最多選用25種模板。

4. 通知欄推送

通知欄推送,也被稱為PUSH推送,即在手機終端鎖屏狀態下通知欄展示或在操作前臺頂端彈出的消息通知。用戶可以在移動設備鎖定屏幕和通知欄看到push消息通知,通知欄點擊可喚起APP并去往相應頁面。

5. 應用內推送

應用內推送常見的形式有彈窗、頂部懸浮通知、收件箱等,可由應用自行控制樣式和內容格式。不足的是只能在用戶在線時查看,觸達有限。

二、移動推送的三種實現方式

在本篇文章中主要介紹通知欄推送的實現方法。在了解具體的推送原理之前,我們先來了解下移動推送的三種實現方式。

1. 輪詢方式(PULL)

客戶端和服務器定期地建立連接,通過消息隊列等方式來查詢是否有新的消息,需要控制連接和查詢的頻率,頻率不能過慢或過快,過慢會導致部分消息更新不及時,過快會消耗更多的資源(流量、電量等),對用戶體驗有較大傷害。

2. 短信推送方式(SMS PUSH)

通過短信發送推送消息,并在客戶端植入短信攔截模塊(主要針對 Android 平臺),可以實現對短信進行攔截并提取其中的內容轉發給 App 應用處理,這個方案借助于運營商的短消息,能夠保證最好的實時性和到達率,但此方案對于成本要求較高,開發者需要為每一條 SMS 支付費用。

3. 長連接方式(PUSH)

客戶端主動和服務器建立 TCP 長連接之后, 客戶端定期向服務器發送心跳包用于保持連接, 有消息的時候, 服務器直接通過這個已經建立好的 TCP 連接通知客戶端。

盡管長連接也會造成一定的開銷,對于輪詢和 SMS 方案的硬傷來說,目前已經是最優的方式,而且通過良好的設計,可以將損耗降至最低。不過,隨著客戶端數量和消息并發量的上升,對于消息服務器的性能和穩定性要求提出了非常大的考驗。因此,就難度而言,此方式代價最高。

基于上面的介紹,我們可以知道長連接方式是移動推送中目前最優的方案,它也是當前主流的推送方式,基于該推送方式逐步發展出系統級、應用級一系列的推送解決方案。

三、系統級推送解決方案

1. iOS 平臺(APNs)

iOS 在系統層面與蘋果 APNs(Apple Push Notification service)服務器建立連接,不論App是在線狀態還是離線狀態,消息推送至iOS的APNS服務器,APNS再根據設備標識推送至指定設備,用戶即可接收到消息。

大致鏈路為:業務系統(發起推送)——第三方消息推送服務商或自建消息推送系統的服務器(推送邏輯控制、推送下發)——蘋果APNS服務器——指定用戶設備。

整個過程很清晰,并且所有 APP 都共用同一個系統級的連接,減少了系統開銷,雖然 APNs 能無障礙的訪問,但實際使用過程中,也會存在延時和丟消息的情況。

2. Android 平臺

Android 的 C2DM(Android Cloud to Device Messaging)采取與 iOS 類似的機制,都是由系統層面來支持消息推送,但是由于 Google 的服務在國內不能穩定的訪問,此方案對于中國用戶來說基本是無法使用的。

除了 Google 官方提供的方案,中國眾多的手機廠商在其定制的系統中也內置了推送功能,如小米、華為等。不過在建立推送服務之前,需要申請開發者賬號并綁定App,在開放平臺開通廠商通道推送的權限。這類廠商機型支持在線離線狀態的消息推送。

消息推送大致鏈路為:業務系統(發起推送)——第三方消息推送服務商或自建消息推送系統的服務器(推送邏輯控制、推送下發)——廠商服務器——指定用戶設備。

四、應用級推送解決方案

1. 第三方推送服務

鑒于 Android 平臺 C2DM 推送的不可用性,國內涌現出大量的第三方推送服務提供商。目前應用最為廣泛的第三方推送服務提供商包括個推、極光、友盟、小米、華為、BAT 等,絕大部分 APP 都會優先考慮采用第三方推送服務。

2. 自建推送服務

第三方服務在開發成本和消息到達率上表現都不錯,但所有信息會經過第三方服務器,對于信息敏感類 APP 而言,有必要考慮自建一套消息推送服務,能最大化保證安全,但自建推送服務需要對 App 客戶端海量長連接的維護管理且面臨保證 Push Service 常駐的難題等。

五、PUSH推送實現方法總結

綜合以上分析,推送實現方式可以簡單概括為:

PUSH消息在消息系統創建好后進入發送階段,服務端根據用戶終端信息進行路由,調用蘋果自身的推送通知服務(APNs)或根據根據不同的安卓廠商去調用對應的SDK,最后下達到用戶設備。

當然,如果是通過之前說過的個推、極光等推送服務商,那么內部的服務端就無需做這些繁瑣的開發工作。他們不僅集成了APNS、小米、華為等大部分廠商通道,還可覆蓋微信公眾號、微信小程序、短信、郵件、支付寶生活號、釘釘 、企業微信、5G消息、飛書等,同時在補發策略、數據監控等層面也有較為成熟的方案。

話又說回來,對于產品經理來說,上述內容只需要了解就可以了,我們更關注的還是如何利用推送提升業務轉化和用戶體驗。至于你問我那為什么還要寫,當你從0搭建一個app時,就能感同身受了。

 

作者:阿宅的產品筆記;公眾號:阿宅的產品筆記(PMZZnote)

本文由 @公眾號阿宅的產品筆記 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

作者:阿宅的產品筆記;公眾號:阿宅的產品筆記

本文由 @阿宅的產品筆記 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 能詳細講講消息創建嗎?

    來自浙江 回復
  2. 學到了。有個問題想請教下:
    客戶端植入短信攔截模塊,這個需要系統授權么?攔截后應用的實際場景和目的是什么?自動讀取驗證碼么?

    來自北京 回復
    1. 短信攔截模塊,在目前的幾家廠商手機中,效果不好,廠商在這塊有不少阻礙策略的。畢竟攔截短信比較影響用戶的

      來自江蘇 回復
  3. push就是在搶占用戶的注意力,不得不說觸達效果真的挺好的

    來自廣東 回復
  4. 以上的推送類型幾乎都見過,特別是近期的618那些來自商家的推送可太多了,都看煩了

    來自廣東 回復
    1. 關閉通知解煩憂

      回復
  5. 1

    來自上海 回復