推送系統(tǒng)從0到1(四):消息如何到達(dá)用戶設(shè)備

4 評(píng)論 15997 瀏覽 81 收藏 12 分鐘

本篇主要為大家揭秘推送消息是如何傳輸?shù)模绾蔚竭_(dá)用戶設(shè)備上的,在不同的設(shè)備上會(huì)如何展示。

在上一篇文章中,我們可以知道在建立推送任務(wù)的過程中,需要考慮帶有自濾功能的用戶池構(gòu)建、篩選有效用戶、設(shè)置推送內(nèi)容、推送時(shí)間、著陸頁的設(shè)置及相關(guān)用途等信息。如果還不清楚的童鞋可以回顧上一篇文章:推送系統(tǒng)從0到1(三):推送任務(wù)的建立?。

本篇主要為大家揭秘推送消息是如何傳輸?shù)?,如何到達(dá)用戶設(shè)備上的,在不同的設(shè)備上會(huì)如何展示。所以首先會(huì)為大家講解在建立推送任務(wù)之后,消息是如何傳輸?shù)摹?/p>

從服務(wù)端到推送服務(wù)平臺(tái)

推送任務(wù)建立之后,服務(wù)端按照約定推送時(shí)間,把所設(shè)置的推送內(nèi)容按照設(shè)備號(hào)查詢對(duì)應(yīng)的token,并發(fā)送給對(duì)應(yīng)的推送平臺(tái)。

值得注意的是:如果同時(shí)接入多個(gè)推送平臺(tái)則需要針對(duì)設(shè)備號(hào)標(biāo)記,這個(gè)設(shè)備需要采用哪個(gè)平臺(tái)的token進(jìn)行推送。Token是對(duì)于推送服務(wù)平臺(tái)來說是用戶的唯一標(biāo)識(shí),不同推送服務(wù)之間的token均不相同。也是因?yàn)槿绱?,才建議大家使用設(shè)備號(hào)作為我們對(duì)用戶的標(biāo)識(shí)。

推送服務(wù)通過長(zhǎng)連接下發(fā)

如同想要給別人打電話,首先要做的事情就是撥通號(hào)碼,而推送同樣的首先需要推送服務(wù)與客戶端建立長(zhǎng)連接。只有接通之后,才能把通知消息傳送給客戶端。

在第二篇文章中,已經(jīng)有講到我們需要選擇推送服務(wù),推送服務(wù)將會(huì)嘗試與客戶端建立長(zhǎng)連接,只有成功建立長(zhǎng)連接的設(shè)備可以進(jìn)行下一步。此時(shí)無法建立長(zhǎng)連接的設(shè)備可能由于Token變更、推送服務(wù)無法喚起等其他異常情況導(dǎo)致無法與客戶端建立長(zhǎng)連接。

無法建立長(zhǎng)連接的設(shè)備將無法進(jìn)行推送,此時(shí)可以把該部分用戶從推送隊(duì)列中篩出來,并進(jìn)行標(biāo)記。防止推送隊(duì)列在執(zhí)行過程中,因?yàn)椴糠衷O(shè)備無法建立連接的原因,導(dǎo)致推送任務(wù)的中止。

同時(shí)被標(biāo)記出來的用戶,可以引入“重發(fā)機(jī)制”,關(guān)于“重發(fā)機(jī)制”的內(nèi)容將會(huì)在下一篇“推送過程中丟失的消息”詳細(xì)講述。當(dāng)設(shè)備多次無法建立長(zhǎng)連接時(shí),該設(shè)備處于暫時(shí)失效狀態(tài),即可進(jìn)入黑名單。

在完成長(zhǎng)連接的建立后,可執(zhí)行消息的下發(fā),第三方的推送服務(wù)使用自身的服務(wù)通道進(jìn)行傳輸,而谷歌推送服務(wù)則會(huì)使用fcm/gcm通道進(jìn)行傳輸。對(duì)于蘋果手機(jī)來說,第三方服務(wù)均承擔(dān)轉(zhuǎn)發(fā)的任務(wù),最后把消息傳輸給APNS,由APNS完成消息傳輸?shù)娜蝿?wù)。當(dāng)然也可以直接由自己的服務(wù)端把消息傳給APNS,不通過第三方平臺(tái),只不過使用第三方平臺(tái)轉(zhuǎn)發(fā)可以減少服務(wù)器開銷。

消息送達(dá)和路由

對(duì)于蘋果推送來說,APNS執(zhí)行消息推送后,此時(shí)消息到達(dá)蘋果手機(jī)上,由蘋果系統(tǒng)執(zhí)行消息的送到和路由展示。

對(duì)于Android系統(tǒng)來說,消息的到達(dá)和路由展示更為開放,可以使用自定義的消息處理方式,自主的選擇消息收到之后是否路由展示,并可以展示成自定義的通知樣式。

所以憑借Android系統(tǒng)開放性的消息處理方式,可以在消息發(fā)送的預(yù)測(cè)試、消息重發(fā)機(jī)制等方式,靈活巧妙的彌補(bǔ)消息的無效發(fā)送和消息丟失問題。關(guān)于這些彌補(bǔ)方案將會(huì)在下一篇詳細(xì)講述。

推送消息的展示

為什么要關(guān)注消息的展示方式?

因?yàn)?strong>消息的展示是吸引用戶點(diǎn)擊最重要的因素,用戶通過瀏覽通知消息決定是否點(diǎn)開瀏覽,所以消息的展示至為重要。除了消息的內(nèi)容以外,消息能否正常展示,展示成何種樣式,能否在眾多通知消息中脫穎而出,成為了爭(zhēng)奪點(diǎn)擊的重要關(guān)鍵點(diǎn),以下會(huì)從針對(duì)不同系統(tǒng)的消息的展示方式進(jìn)行講解。

Android系統(tǒng)

Android系統(tǒng)從1.X到8.X通知欄進(jìn)行了非常大的變化和改版,由于Android系統(tǒng)對(duì)個(gè)性化開放的追求,不僅部分Android手機(jī)擁有個(gè)性化的通知欄(如:國產(chǎn)機(jī))以外,谷歌也在持續(xù)對(duì)通知欄進(jìn)行調(diào)整和優(yōu)化,提供更多的個(gè)性化支持,并提供自定義通知消息。

下面簡(jiǎn)單介紹幾種標(biāo)準(zhǔn)Android系統(tǒng)的通知展示:

  1. Android 5.x系統(tǒng):引入Material Design的設(shè)計(jì)風(fēng)格,通知欄主要為白色背景、暗色字體,并可通過狀態(tài)欄的懸浮窗口展示通知消息。
  2. Android 6.X系統(tǒng):允許用戶控制應(yīng)用通知的優(yōu)先級(jí)并且加入免打擾模式。
  3. Android 7.X系統(tǒng):通知欄全面改版,左上角小圖標(biāo)、app名稱、副標(biāo)題、數(shù)量和時(shí)間在第一列、第二列為主標(biāo)題、第三列為內(nèi)容,并且支持直接回復(fù)。更為重要的是支持通知消息組,通知消息達(dá)到一定數(shù)量(好像是4條以上)會(huì)合并成消息組展示。
  4. Android 8.X系統(tǒng):引入通知渠道的概念,即可以把推送類型分成多個(gè)渠道進(jìn)行推送,用戶可自主選擇開啟或關(guān)閉其中的一個(gè)或全部渠道。增加通知標(biāo)志,用戶可以通過長(zhǎng)按應(yīng)用圖標(biāo)來瀏覽通知消息,還提供自定義通知的背景顏色等個(gè)性化功能。

圖片來自Xing’s Blog,如有侵權(quán)請(qǐng)聯(lián)系本人立即刪除

IOS 系統(tǒng)

  • IOS 10系統(tǒng):支持富文本通知展示,如:圖片、GIF、視頻等;通知調(diào)整為圓角卡片式展示,3D touch可以展示通知詳情等。
  • IOS 11系統(tǒng):合并鎖屏和通知中心。默認(rèn)顯示新通知,上滑顯示所有未處理的通知,鎖定屏幕時(shí),將所有未處理的通知移入「歷史通知」列表。
  • IOS 12系統(tǒng):新增通知分組功能,增加安靜通知功能,強(qiáng)化勿擾模式。

谷歌瀏覽器

  • PC端:windows機(jī)器和mac機(jī)器的chrome瀏覽器均可以支持單條消息推送,windows機(jī)器的chrome瀏覽器還可以支持多條消息合并推送。
  • 手機(jī)端:Android手機(jī)chrome瀏覽器支持類似于APP的通知推送,谷歌推出pwa技術(shù)可以讓手機(jī)端瀏覽器推送效果更像原生APP。

通過對(duì)比可以發(fā)現(xiàn):不同系統(tǒng)設(shè)備關(guān)于推送通知的展示會(huì)有所不同,即使用個(gè)系統(tǒng)不同版本之間也純?cè)诓町悺?strong>切勿以偏概全,不考慮設(shè)備端的差異就只管發(fā)送。也許部分用戶都無法看全推送通知內(nèi)容,點(diǎn)擊率自然上不去。

所以在進(jìn)行客戶端差異化展示的設(shè)計(jì)中,可以遵循以下方式:

  1. 根據(jù)應(yīng)用/網(wǎng)站主流用戶的設(shè)備情況,選擇主要處理的幾個(gè)系統(tǒng);
  2. 根據(jù)系統(tǒng)的不同版本之間的特性進(jìn)行單獨(dú)處理;
  3. 若是批量發(fā)送,需要考慮標(biāo)題、內(nèi)容長(zhǎng)度能否在不同系統(tǒng)之間兼容;
  4. 測(cè)試各系統(tǒng)設(shè)備的展示效果,力求效果最優(yōu)。

同時(shí)需要注意到部分系統(tǒng)的特性,例如:Android7.x以上系統(tǒng),當(dāng)收到超過一定數(shù)量推送消息后,消息將會(huì)合并成消息組。這樣既不利于通知消息的曝光,也不利于用戶的點(diǎn)擊。所以在短時(shí)間內(nèi)的推送數(shù)量所需要考慮的

又如:IOS系統(tǒng)的推送通知本身沒有明顯的標(biāo)題和內(nèi)容區(qū)分,但是按照用戶的瀏覽習(xí)慣,若有明顯標(biāo)題展示點(diǎn)擊意愿更為強(qiáng)烈(可自行測(cè)試),此時(shí)可把內(nèi)容的第一行作為IOS通知的標(biāo)題并加粗。

同時(shí)IOS10以上系統(tǒng)支持3Dtouch查看,通知詳情則可以附加一些富文本內(nèi)容增加吸引力。

本篇總結(jié)

本篇文章主要介紹了從推送任務(wù)建立之后,推送消息是如何到達(dá)用戶的設(shè)備上,并且會(huì)展示成什么樣式,那么歸納起來有以下四點(diǎn):

  1. 推送消息首先會(huì)由服務(wù)端根據(jù)token發(fā)送給推送服務(wù);
  2. 推送服務(wù)通過長(zhǎng)連接把通知消息下發(fā)給設(shè)備;
  3. 設(shè)備把推送消息路由且顯示出來;
  4. 推送消息的展示會(huì)根據(jù)設(shè)備和系統(tǒng)有所差異,需要有針對(duì)性的設(shè)計(jì)。

通過本篇介紹已經(jīng)了解到消息是如何傳達(dá)用戶設(shè)備的,但是你知道消息在傳遞過程中會(huì)遇到什么艱難險(xiǎn)阻,消息在推送過程中是如何丟失的,為什么推送到達(dá)率和點(diǎn)擊率不高?

帶著這些疑問,敬請(qǐng)期待下一篇:推送系統(tǒng)從0到1(五):推送消息如何丟失的

相關(guān)閱讀

推送系統(tǒng)從0到1(一):是系統(tǒng)不是工具

推送系統(tǒng)從0到1(二):了解你的用戶

推送系統(tǒng)從0到1(三):推送任務(wù)的建立

 

本文由 @番茄那只羊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

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

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 寫的很好,打算全部看完這一系列~

    來自湖南 回復(fù)
  2. 不錯(cuò),學(xué)習(xí)了??

    回復(fù)
  3. 持續(xù)關(guān)注中,期待后續(xù)的精彩內(nèi)容!

    來自廣東 回復(fù)
    1. 感謝支持~~~ ??

      來自廣東 回復(fù)