推送系統從0到1(四):消息如何到達用戶設備
本篇主要為大家揭秘推送消息是如何傳輸的,如何到達用戶設備上的,在不同的設備上會如何展示。
在上一篇文章中,我們可以知道在建立推送任務的過程中,需要考慮帶有自濾功能的用戶池構建、篩選有效用戶、設置推送內容、推送時間、著陸頁的設置及相關用途等信息。如果還不清楚的童鞋可以回顧上一篇文章:推送系統從0到1(三):推送任務的建立?。
本篇主要為大家揭秘推送消息是如何傳輸的,如何到達用戶設備上的,在不同的設備上會如何展示。所以首先會為大家講解在建立推送任務之后,消息是如何傳輸的。
從服務端到推送服務平臺
推送任務建立之后,服務端按照約定推送時間,把所設置的推送內容按照設備號查詢對應的token,并發送給對應的推送平臺。
值得注意的是:如果同時接入多個推送平臺則需要針對設備號標記,這個設備需要采用哪個平臺的token進行推送。Token是對于推送服務平臺來說是用戶的唯一標識,不同推送服務之間的token均不相同。也是因為如此,才建議大家使用設備號作為我們對用戶的標識。
推送服務通過長連接下發
如同想要給別人打電話,首先要做的事情就是撥通號碼,而推送同樣的首先需要推送服務與客戶端建立長連接。只有接通之后,才能把通知消息傳送給客戶端。
在第二篇文章中,已經有講到我們需要選擇推送服務,推送服務將會嘗試與客戶端建立長連接,只有成功建立長連接的設備可以進行下一步。此時無法建立長連接的設備可能由于Token變更、推送服務無法喚起等其他異常情況導致無法與客戶端建立長連接。
無法建立長連接的設備將無法進行推送,此時可以把該部分用戶從推送隊列中篩出來,并進行標記。防止推送隊列在執行過程中,因為部分設備無法建立連接的原因,導致推送任務的中止。
同時被標記出來的用戶,可以引入“重發機制”,關于“重發機制”的內容將會在下一篇“推送過程中丟失的消息”詳細講述。當設備多次無法建立長連接時,該設備處于暫時失效狀態,即可進入黑名單。
在完成長連接的建立后,可執行消息的下發,第三方的推送服務使用自身的服務通道進行傳輸,而谷歌推送服務則會使用fcm/gcm通道進行傳輸。對于蘋果手機來說,第三方服務均承擔轉發的任務,最后把消息傳輸給APNS,由APNS完成消息傳輸的任務。當然也可以直接由自己的服務端把消息傳給APNS,不通過第三方平臺,只不過使用第三方平臺轉發可以減少服務器開銷。
消息送達和路由
對于蘋果推送來說,APNS執行消息推送后,此時消息到達蘋果手機上,由蘋果系統執行消息的送到和路由展示。
對于Android系統來說,消息的到達和路由展示更為開放,可以使用自定義的消息處理方式,自主的選擇消息收到之后是否路由展示,并可以展示成自定義的通知樣式。
所以憑借Android系統開放性的消息處理方式,可以在消息發送的預測試、消息重發機制等方式,靈活巧妙的彌補消息的無效發送和消息丟失問題。關于這些彌補方案將會在下一篇詳細講述。
推送消息的展示
為什么要關注消息的展示方式?
因為消息的展示是吸引用戶點擊最重要的因素,用戶通過瀏覽通知消息決定是否點開瀏覽,所以消息的展示至為重要。除了消息的內容以外,消息能否正常展示,展示成何種樣式,能否在眾多通知消息中脫穎而出,成為了爭奪點擊的重要關鍵點,以下會從針對不同系統的消息的展示方式進行講解。
Android系統
Android系統從1.X到8.X通知欄進行了非常大的變化和改版,由于Android系統對個性化開放的追求,不僅部分Android手機擁有個性化的通知欄(如:國產機)以外,谷歌也在持續對通知欄進行調整和優化,提供更多的個性化支持,并提供自定義通知消息。
下面簡單介紹幾種標準Android系統的通知展示:
- Android 5.x系統:引入Material Design的設計風格,通知欄主要為白色背景、暗色字體,并可通過狀態欄的懸浮窗口展示通知消息。
- Android 6.X系統:允許用戶控制應用通知的優先級并且加入免打擾模式。
- Android 7.X系統:通知欄全面改版,左上角小圖標、app名稱、副標題、數量和時間在第一列、第二列為主標題、第三列為內容,并且支持直接回復。更為重要的是支持通知消息組,通知消息達到一定數量(好像是4條以上)會合并成消息組展示。
- Android 8.X系統:引入通知渠道的概念,即可以把推送類型分成多個渠道進行推送,用戶可自主選擇開啟或關閉其中的一個或全部渠道。增加通知標志,用戶可以通過長按應用圖標來瀏覽通知消息,還提供自定義通知的背景顏色等個性化功能。
圖片來自Xing’s Blog,如有侵權請聯系本人立即刪除
IOS 系統
- IOS 10系統:支持富文本通知展示,如:圖片、GIF、視頻等;通知調整為圓角卡片式展示,3D touch可以展示通知詳情等。
- IOS 11系統:合并鎖屏和通知中心。默認顯示新通知,上滑顯示所有未處理的通知,鎖定屏幕時,將所有未處理的通知移入「歷史通知」列表。
- IOS 12系統:新增通知分組功能,增加安靜通知功能,強化勿擾模式。
谷歌瀏覽器
- PC端:windows機器和mac機器的chrome瀏覽器均可以支持單條消息推送,windows機器的chrome瀏覽器還可以支持多條消息合并推送。
- 手機端:Android手機chrome瀏覽器支持類似于APP的通知推送,谷歌推出pwa技術可以讓手機端瀏覽器推送效果更像原生APP。
通過對比可以發現:不同系統設備關于推送通知的展示會有所不同,即使用個系統不同版本之間也純在差異。切勿以偏概全,不考慮設備端的差異就只管發送。也許部分用戶都無法看全推送通知內容,點擊率自然上不去。
所以在進行客戶端差異化展示的設計中,可以遵循以下方式:
- 根據應用/網站主流用戶的設備情況,選擇主要處理的幾個系統;
- 根據系統的不同版本之間的特性進行單獨處理;
- 若是批量發送,需要考慮標題、內容長度能否在不同系統之間兼容;
- 測試各系統設備的展示效果,力求效果最優。
同時需要注意到部分系統的特性,例如:Android7.x以上系統,當收到超過一定數量推送消息后,消息將會合并成消息組。這樣既不利于通知消息的曝光,也不利于用戶的點擊。所以在短時間內的推送數量所需要考慮的。
又如:IOS系統的推送通知本身沒有明顯的標題和內容區分,但是按照用戶的瀏覽習慣,若有明顯標題展示點擊意愿更為強烈(可自行測試),此時可把內容的第一行作為IOS通知的標題并加粗。
同時IOS10以上系統支持3Dtouch查看,通知詳情則可以附加一些富文本內容增加吸引力。
本篇總結
本篇文章主要介紹了從推送任務建立之后,推送消息是如何到達用戶的設備上,并且會展示成什么樣式,那么歸納起來有以下四點:
- 推送消息首先會由服務端根據token發送給推送服務;
- 推送服務通過長連接把通知消息下發給設備;
- 設備把推送消息路由且顯示出來;
- 推送消息的展示會根據設備和系統有所差異,需要有針對性的設計。
通過本篇介紹已經了解到消息是如何傳達用戶設備的,但是你知道消息在傳遞過程中會遇到什么艱難險阻,消息在推送過程中是如何丟失的,為什么推送到達率和點擊率不高?
帶著這些疑問,敬請期待下一篇:推送系統從0到1(五):推送消息如何丟失的
相關閱讀
本文由 @番茄那只羊 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Pexels,基于CC0協議
寫的很好,打算全部看完這一系列~
不錯,學習了??
持續關注中,期待后續的精彩內容!
感謝支持~~~ ??