編輯導(dǎo)語(yǔ):如今,push已經(jīng)成為了我們手機(jī)信息流的一種推廣方式,那么push消息推送是如何實(shí)現(xiàn)的呢?作者總結(jié)了幾種消息推送的類(lèi)型以及實(shí)現(xiàn)原理,一起來(lái)看看。
一、消息推送的類(lèi)型
1. 短信推送
指通過(guò)運(yùn)營(yíng)商將文本或數(shù)字消息傳遞至用戶(hù)手機(jī)或其他電信終端。它憑借著優(yōu)秀的發(fā)送率和到達(dá)率,一度成為最受歡迎的營(yíng)銷(xiāo)工具之一。
一般企業(yè)不太會(huì)直接對(duì)接移動(dòng)、聯(lián)通、電信來(lái)實(shí)現(xiàn)短信發(fā)送,而是通過(guò)中間的服務(wù)商將各地區(qū)的運(yùn)營(yíng)商資源整合后提供統(tǒng)一、便捷的短信服務(wù),這類(lèi)服務(wù)商叫短信服務(wù)商,也可叫短信SP。
目前,支持個(gè)人短信服務(wù)的廠商有阿里云、騰訊云,其他廠商都是需要認(rèn)證為企業(yè)用戶(hù)才能使用短信服務(wù)平臺(tái)。短信供應(yīng)商根據(jù)發(fā)送量進(jìn)行收費(fèi),發(fā)送越多單價(jià)越便宜。
2. 郵件推送
EDM(Email Direct Marketing),即電子郵件營(yíng)銷(xiāo)。企業(yè)可以通過(guò)EDM建立同目標(biāo)顧客的溝通渠道,向其直接傳達(dá)相關(guān)信息,用來(lái)促進(jìn)銷(xiāo)售。郵件推送具有精準(zhǔn)送達(dá)、個(gè)性化定制、內(nèi)容格式豐富的特點(diǎn)。亞馬遜就曾憑借優(yōu)秀的電子郵件營(yíng)銷(xiāo)出圈。
3. 微信消息推送
截至2022年3月31日,微信及WeChat的合并月活躍賬戶(hù)數(shù)為12.883億。隨著微信的影響力的增強(qiáng),越來(lái)越多的企業(yè)也逐漸重視微信生態(tài)的布局,微信消息推送就是其一,它的到達(dá)率高、支持精準(zhǔn)推送。不足的是,其內(nèi)容受限于模板,且微信提供的模板數(shù)量有限,一個(gè)公眾號(hào)最多選用25種模板。
4. 通知欄推送
通知欄推送,也被稱(chēng)為PUSH推送,即在手機(jī)終端鎖屏狀態(tài)下通知欄展示或在操作前臺(tái)頂端彈出的消息通知。用戶(hù)可以在移動(dòng)設(shè)備鎖定屏幕和通知欄看到push消息通知,通知欄點(diǎn)擊可喚起APP并去往相應(yīng)頁(yè)面。
5. 應(yīng)用內(nèi)推送
應(yīng)用內(nèi)推送常見(jiàn)的形式有彈窗、頂部懸浮通知、收件箱等,可由應(yīng)用自行控制樣式和內(nèi)容格式。不足的是只能在用戶(hù)在線時(shí)查看,觸達(dá)有限。
二、移動(dòng)推送的三種實(shí)現(xiàn)方式
在本篇文章中主要介紹通知欄推送的實(shí)現(xiàn)方法。在了解具體的推送原理之前,我們先來(lái)了解下移動(dòng)推送的三種實(shí)現(xiàn)方式。
1. 輪詢(xún)方式(PULL)
客戶(hù)端和服務(wù)器定期地建立連接,通過(guò)消息隊(duì)列等方式來(lái)查詢(xún)是否有新的消息,需要控制連接和查詢(xún)的頻率,頻率不能過(guò)慢或過(guò)快,過(guò)慢會(huì)導(dǎo)致部分消息更新不及時(shí),過(guò)快會(huì)消耗更多的資源(流量、電量等),對(duì)用戶(hù)體驗(yàn)有較大傷害。
2. 短信推送方式(SMS PUSH)
通過(guò)短信發(fā)送推送消息,并在客戶(hù)端植入短信攔截模塊(主要針對(duì) Android 平臺(tái)),可以實(shí)現(xiàn)對(duì)短信進(jìn)行攔截并提取其中的內(nèi)容轉(zhuǎn)發(fā)給 App 應(yīng)用處理,這個(gè)方案借助于運(yùn)營(yíng)商的短消息,能夠保證最好的實(shí)時(shí)性和到達(dá)率,但此方案對(duì)于成本要求較高,開(kāi)發(fā)者需要為每一條 SMS 支付費(fèi)用。
3. 長(zhǎng)連接方式(PUSH)
客戶(hù)端主動(dòng)和服務(wù)器建立 TCP 長(zhǎng)連接之后, 客戶(hù)端定期向服務(wù)器發(fā)送心跳包用于保持連接, 有消息的時(shí)候, 服務(wù)器直接通過(guò)這個(gè)已經(jīng)建立好的 TCP 連接通知客戶(hù)端。
盡管長(zhǎng)連接也會(huì)造成一定的開(kāi)銷(xiāo),對(duì)于輪詢(xún)和 SMS 方案的硬傷來(lái)說(shuō),目前已經(jīng)是最優(yōu)的方式,而且通過(guò)良好的設(shè)計(jì),可以將損耗降至最低。不過(guò),隨著客戶(hù)端數(shù)量和消息并發(fā)量的上升,對(duì)于消息服務(wù)器的性能和穩(wěn)定性要求提出了非常大的考驗(yàn)。因此,就難度而言,此方式代價(jià)最高。
基于上面的介紹,我們可以知道長(zhǎng)連接方式是移動(dòng)推送中目前最優(yōu)的方案,它也是當(dāng)前主流的推送方式,基于該推送方式逐步發(fā)展出系統(tǒng)級(jí)、應(yīng)用級(jí)一系列的推送解決方案。
三、系統(tǒng)級(jí)推送解決方案
1. iOS 平臺(tái)(APNs)
iOS 在系統(tǒng)層面與蘋(píng)果 APNs(Apple Push Notification service)服務(wù)器建立連接,不論App是在線狀態(tài)還是離線狀態(tài),消息推送至iOS的APNS服務(wù)器,APNS再根據(jù)設(shè)備標(biāo)識(shí)推送至指定設(shè)備,用戶(hù)即可接收到消息。
大致鏈路為:業(yè)務(wù)系統(tǒng)(發(fā)起推送)——第三方消息推送服務(wù)商或自建消息推送系統(tǒng)的服務(wù)器(推送邏輯控制、推送下發(fā))——蘋(píng)果APNS服務(wù)器——指定用戶(hù)設(shè)備。
整個(gè)過(guò)程很清晰,并且所有 APP 都共用同一個(gè)系統(tǒng)級(jí)的連接,減少了系統(tǒng)開(kāi)銷(xiāo),雖然 APNs 能無(wú)障礙的訪問(wèn),但實(shí)際使用過(guò)程中,也會(huì)存在延時(shí)和丟消息的情況。
2. Android 平臺(tái)
Android 的 C2DM(Android Cloud to Device Messaging)采取與 iOS 類(lèi)似的機(jī)制,都是由系統(tǒng)層面來(lái)支持消息推送,但是由于 Google 的服務(wù)在國(guó)內(nèi)不能穩(wěn)定的訪問(wèn),此方案對(duì)于中國(guó)用戶(hù)來(lái)說(shuō)基本是無(wú)法使用的。
除了 Google 官方提供的方案,中國(guó)眾多的手機(jī)廠商在其定制的系統(tǒng)中也內(nèi)置了推送功能,如小米、華為等。不過(guò)在建立推送服務(wù)之前,需要申請(qǐng)開(kāi)發(fā)者賬號(hào)并綁定App,在開(kāi)放平臺(tái)開(kāi)通廠商通道推送的權(quán)限。這類(lèi)廠商機(jī)型支持在線離線狀態(tài)的消息推送。
消息推送大致鏈路為:業(yè)務(wù)系統(tǒng)(發(fā)起推送)——第三方消息推送服務(wù)商或自建消息推送系統(tǒng)的服務(wù)器(推送邏輯控制、推送下發(fā))——廠商服務(wù)器——指定用戶(hù)設(shè)備。
四、應(yīng)用級(jí)推送解決方案
1. 第三方推送服務(wù)
鑒于 Android 平臺(tái) C2DM 推送的不可用性,國(guó)內(nèi)涌現(xiàn)出大量的第三方推送服務(wù)提供商。目前應(yīng)用最為廣泛的第三方推送服務(wù)提供商包括個(gè)推、極光、友盟、小米、華為、BAT 等,絕大部分 APP 都會(huì)優(yōu)先考慮采用第三方推送服務(wù)。
2. 自建推送服務(wù)
第三方服務(wù)在開(kāi)發(fā)成本和消息到達(dá)率上表現(xiàn)都不錯(cuò),但所有信息會(huì)經(jīng)過(guò)第三方服務(wù)器,對(duì)于信息敏感類(lèi) APP 而言,有必要考慮自建一套消息推送服務(wù),能最大化保證安全,但自建推送服務(wù)需要對(duì) App 客戶(hù)端海量長(zhǎng)連接的維護(hù)管理且面臨保證 Push Service 常駐的難題等。
五、PUSH推送實(shí)現(xiàn)方法總結(jié)
綜合以上分析,推送實(shí)現(xiàn)方式可以簡(jiǎn)單概括為:
PUSH消息在消息系統(tǒng)創(chuàng)建好后進(jìn)入發(fā)送階段,服務(wù)端根據(jù)用戶(hù)終端信息進(jìn)行路由,調(diào)用蘋(píng)果自身的推送通知服務(wù)(APNs)或根據(jù)根據(jù)不同的安卓廠商去調(diào)用對(duì)應(yīng)的SDK,最后下達(dá)到用戶(hù)設(shè)備。
當(dāng)然,如果是通過(guò)之前說(shuō)過(guò)的個(gè)推、極光等推送服務(wù)商,那么內(nèi)部的服務(wù)端就無(wú)需做這些繁瑣的開(kāi)發(fā)工作。他們不僅集成了APNS、小米、華為等大部分廠商通道,還可覆蓋微信公眾號(hào)、微信小程序、短信、郵件、支付寶生活號(hào)、釘釘 、企業(yè)微信、5G消息、飛書(shū)等,同時(shí)在補(bǔ)發(fā)策略、數(shù)據(jù)監(jiān)控等層面也有較為成熟的方案。
話又說(shuō)回來(lái),對(duì)于產(chǎn)品經(jīng)理來(lái)說(shuō),上述內(nèi)容只需要了解就可以了,我們更關(guān)注的還是如何利用推送提升業(yè)務(wù)轉(zhuǎn)化和用戶(hù)體驗(yàn)。至于你問(wèn)我那為什么還要寫(xiě),當(dāng)你從0搭建一個(gè)app時(shí),就能感同身受了。
作者:阿宅的產(chǎn)品筆記;公眾號(hào):阿宅的產(chǎn)品筆記(PMZZnote)
本文由 @公眾號(hào)阿宅的產(chǎn)品筆記 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。