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