一文帶你徹底了解APP PUSH推送機制
本文主要講解關于APP PUSH的流程、機制及相關經驗,一是為了方便大家可以針對APP迅速制定PUSH消息推送方案,實現0到1的推送功能搭建;二是可以了解下PUSH流程,對各個環節針對性地提高觸達率。
一、APP PUSH定義與價值
APP PUSH的定義為在手機終端鎖屏狀態下通知欄展示或在操作前臺頂端彈出的消息通知,點擊后可喚起對應的APP,并在APP內跳轉到指定頁面。
push消息是通知用戶,引導用戶進行參與活動、購買產品的重要手段,而且PUSH消息也可以引導用戶查看消息,喚起APP提高日活,是一塊重要的流量。
二、APP推送分類
從應用的功能來劃分,主要分為三類應用,第一類是IM類APP,如微信、QQ等;第二類是新聞資訊類,如華爾街見聞等;其余暫歸為為工具類,比如支付寶、美團等。
每種類型APP對PUSH的需求也不同,IM類APP追求實時、穩定的觸達,此類APP一般通過自己的長連接進行消息推送,保證用戶在收到消息的時候能夠實時地接收消息消息。另外,一些安卓廠商也會給予頭部APP的進程一定保護,對相關的進程納入白名單,在清理進程的時候予以忽略。
新聞資訊類的APP與工具類APP的PUSH推送機制基本一致,僅在頻率控制上有差異,新聞資訊類由于新聞資訊較多,需要將突發新聞及時推送給用戶。
由于目前工具類的APP占大多數,本文將主要講解工具類APP的常見推送機制。
三、PUSH流程
PUSH消息在消息系統創建好后進入發送階段,服務端需要根據用戶終端信息進行路由,如果是IOS系統,那么會調用蘋果自身的推送通知服務(APNs),如果用戶的手機是安卓系統,那么根據不同的廠商去調用不同的廠商SDK。
對于不同的系統版本,支持的消息展示形式也是不同,比如IOS10之后,當APP在前臺時,是否通知欄展示;此樣式可以根據產品需求來選擇,有服務端傳輸相應通知方式的值即可。如果用戶的手機非五大廠商內的手機,可以通過自己搭建的長連接或者使用第三方服務進行推送。
如果不是自己直接對接廠商通道,那么內部的服務端可能無需做過多較為復雜繁瑣的開發工作,通過接入第三方消息推送平臺來實現消息的推送,比如信鴿、個推等。多數的通道會將消息是否成功推送到客戶端SDK的回執數據反饋給發送方,需要提供回調地址。
四、底層通道說明
4.1 推送通道
通道類型一般分為三類:廠商通道、第三方推送服務平臺、長連接。
廠商通道是手機終端廠商推出的推送服務,通過接入廠商SDK,內部服務端可以將消息推送到手機系統的服務端,再下發至客戶端內部的廠商SDK,由操作系統進行相應展示,點擊后喚起相應APP,這樣可以避免APP進程被殺死后消息無法觸達用戶,因此觸達率較高。
第三方推送平臺是推送服務公司自己搭建相關的消息服務。并且各個APP使用了同一個平臺的推送服務時,客戶端都是集成同一個第三方推送平臺的SDK,因此形成了一個推送聯盟,當聯盟中的其中一個APP的消息進程沒有被殺死的時候,其他的APP也可以利用進行通知用戶,形成了相互喚起,提高觸達率。
經過一些場景的測試,相互喚起的成功率并不是很高,需謹慎結合自身場景評估。為了提高觸達率,第三方推送平臺也會集成各大廠商的SDK進行推送。
長連接就是建立手機與服務端的一條鏈路進行消息數據推送,通過長連接也可以進行APP狀態監控,但完全由長連接推送且保證觸達的穩定,需要投入的研發資源較多,且需盡量避免自己的長連接進程不要被操作系統殺死。
4.2 優劣勢對比
APP push功能的搭建需要依據產品自身的情況和公司可投入的資源成本為主,在不同的階段應該追逐不同的目標。
五、下發推送
5.1 推送賬號
推送時客戶端的PUSH SDK均會根據用戶的設備號生成一個對應關系的TOKEN。
在SDK內部,如果使用的是第三方推送服務,則去第三方的SDK注冊;如果是廠商,則去商城SDK注冊;如果使用自己長連接,則去自己的SDK進行注冊,作為后續推送的標識用戶的唯一ID。
5.2 消息路由
消息路主要見上述推送流程的講解,此處主要講解根據不同的業務場景,可能會定向推送給不同版本APP的用戶。因此服務端在通道能力路由的時候,不僅需要能夠區分通道,還要進一步能夠針對用戶的手機終端進行更加精細化的差異推送。
此外,消息通道并一定是100%穩定,如果下游通道出現問題,服務端需能夠將由于通道問題導致的消息路由到備用通道去發送,以保證業務穩定觸達。
5.3 全量推送
一般來說,對于公司內部運營或公司的相關數據均是以產品的customer id為準,用戶數據系統對接消息系統時也多為customer id,因此需建立customer id與推送TOKEN的關系,便于運營針對用戶進行推送。但對于一些場景會需要針對未登錄的用戶也進行推送,即全量推送;比如突發重大新聞資訊、大促等活動,所以運營系統需要提供全量推送功能,針對所有TOKEN進行推送。
六、數據上報
上報數據包括觸達 點擊 關閉 退出 注冊等數據。
對于所有方式的觸達消息,都離不開觸達與點擊,觸達的數據通過廠商的需要廠商回調上報,點擊數據可以由SDK上報服務端。
對于push的關閉,也是需要進行考量的,來評估push是否過度發送,打擾到了用戶。關閉數據有兩部分,一部分為app內部的關閉,sdk直接上報給服務端即可;另一部分為用戶在手機操作系統上關閉了對應app的push,需要APP在前臺時,sdk調用手機終端相關方法獲取該用戶是否關閉了系統通知,然后上報至服務端。
注冊數據即用戶首次啟動APP時,去相關sdk注冊token。
用戶退出賬號時,sdk需要上報服務端,解除token與customer id的綁定關系。
七、PUSH特點
7.1 強提醒 不留痕
push由于是app自己的通知渠道,是運營的一個重要工具。
如果用戶未關閉PUSH通知的話,push可以從通知欄彈出進行消息顯示,具有一定的強提醒性,但PUSH點擊跳轉后便消失,沒有痕跡,因此針對于重點的通知消息,需要在APP內設置消息中心,在PUSH的同時留下通知記錄。
7.2 消息樣式
對于各家PUSH來說,一些營銷消息會加入EMOJI表情來吸引用戶點擊,這也是一個吸引用戶點擊的一個小方法,只要服務支持傳輸約定好的EMOJI碼就可以了。
目前安卓系統也支持富媒體推送,推送包含圖片、語音等形式,對于資訊類的APP可以增加縮略圖,吸引用戶點擊。目前來看,語音場景還有點挖掘。
7.3 IOS和安卓
由于APP是基于手機操作系統,因此對于IOS和安卓的推送的流程及功能基本相同,只不過細節和方法上略有不同,且國內安卓產商都在安卓系統上進行了一定改造,導致國內安卓廠商標準各不相同,需要開發同學仔細對接各個廠商。
八、觸達率的提升
觸達率的提升需要從消息創建到實際通知到用戶的建立完整流程,細化每一個交互環節,發現影響觸達率的主要瓶頸,并針對性地進行解決或優化方案。
除此之外,未采用廠商通道的消息也可以采用自己的長連接和其他推送平臺服務同時多條推送,在客戶端的SDK內增加針對同一罅隙流水號的去重,這樣可以也可以提高一部分消息的觸達率。
以上內容為個人經驗總結,歡迎討論指正。
相關閱讀
本文由 @卓別木 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
挺好的
深入淺出
河犸車商寶
應用推送的消息需要與賬號關聯,如果該用戶在登錄狀態下,卸載了應用,又重新安裝了應用,但沒有登錄應用,那么此時該用戶能否收到與之關聯的推送消息?
請問,token是什么意思呢
終端的令牌