PUSH消息推送的實現(xiàn)原理

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

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

一、消息推送的類型

1. 短信推送

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

一般企業(yè)不太會直接對接移動、聯(lián)通、電信來實現(xiàn)短信發(fā)送,而是通過中間的服務(wù)商將各地區(qū)的運營商資源整合后提供統(tǒng)一、便捷的短信服務(wù),這類服務(wù)商叫短信服務(wù)商,也可叫短信SP。

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

2. 郵件推送

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

3. 微信消息推送

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

4. 通知欄推送

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

5. 應(yīng)用內(nèi)推送

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

二、移動推送的三種實現(xiàn)方式

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

1. 輪詢方式(PULL)

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

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

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

3. 長連接方式(PUSH)

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

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

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

三、系統(tǒng)級推送解決方案

1. iOS 平臺(APNs)

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

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

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

2. Android 平臺

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

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

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

四、應(yīng)用級推送解決方案

1. 第三方推送服務(wù)

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

2. 自建推送服務(wù)

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

五、PUSH推送實現(xiàn)方法總結(jié)

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

PUSH消息在消息系統(tǒng)創(chuàng)建好后進入發(fā)送階段,服務(wù)端根據(jù)用戶終端信息進行路由,調(diào)用蘋果自身的推送通知服務(wù)(APNs)或根據(jù)根據(jù)不同的安卓廠商去調(diào)用對應(yīng)的SDK,最后下達到用戶設(shè)備。

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

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

 

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

本文由 @公眾號阿宅的產(chǎn)品筆記 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議。

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

本文由 @阿宅的產(chǎn)品筆記 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議。

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 能詳細(xì)講講消息創(chuàng)建嗎?

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

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

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

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

    來自廣東 回復(fù)
    1. 關(guān)閉通知解煩憂

      回復(fù)
  5. 1

    來自上海 回復(fù)