首先我們應(yīng)該知道APP開(kāi)發(fā)中的推送功能到底是什么,它的價(jià)值何在?首先我們看一下定義:推送定義為在手機(jī)終端鎖屏狀態(tài)下,通知欄展示或者是在操作的情況下,前端彈出消息提示,點(diǎn)擊后可換起對(duì)應(yīng)的APP或在APP內(nèi)進(jìn)行跳轉(zhuǎn)到指定相應(yīng)的頁(yè)面。APP推送消息是通知客戶(hù),引導(dǎo)客戶(hù)進(jìn)行下一步的活動(dòng),在營(yíng)銷(xiāo)過(guò)程當(dāng)中,推送是非常有價(jià)值的營(yíng)銷(xiāo)手段,可以引導(dǎo)用戶(hù)查看相應(yīng)的消息,喚起APP的使用和活性也是流量的重要來(lái)源。進(jìn)行APP的開(kāi)發(fā)這個(gè)是必不可少的內(nèi)容。
接下來(lái)我們來(lái)看一下推送的分類(lèi):從應(yīng)用的功能來(lái)分類(lèi),推送主要分為三類(lèi)應(yīng)用:第1類(lèi)是即時(shí)通訊類(lèi)的APP,例如微信、QQ等第;2類(lèi)是新聞資訊類(lèi)的APP,例如華爾街見(jiàn)聞或者是今日頭條等等;第3類(lèi)統(tǒng)稱(chēng)為商業(yè)APP,比如支付寶工具應(yīng)用APP以及美團(tuán)等其他類(lèi)型的商業(yè)APP。每種類(lèi)型的APP對(duì)推送的需求是不相同的,即時(shí)通信類(lèi)的APP追求的是實(shí)時(shí)穩(wěn)定的到達(dá),此類(lèi)的APP,一般通過(guò)自己的長(zhǎng)鏈接進(jìn)行消息推送,保證用戶(hù)在收到消息的時(shí)候能夠準(zhǔn)確的收到內(nèi)容。另外一些安卓廠(chǎng)商也會(huì)給予IM類(lèi)的APP進(jìn)行一定的保護(hù),對(duì)相關(guān)進(jìn)程納入白名單,在清理后臺(tái)后也可以繼續(xù)使用。而新聞資訊類(lèi)的語(yǔ)言和工具類(lèi)的APP推送的機(jī)制基本是相同的,只是在頻率控制上面有很大的差異,因?yàn)樾侣劦膬?nèi)容很多,只是將重點(diǎn)的內(nèi)容和要聞推送給我們的用戶(hù)。而其他商用語(yǔ)音就是根據(jù)實(shí)際的用戶(hù)使用頻率要求來(lái)確定。
再來(lái)看一下消息推送的流程消息,推送是在消息系統(tǒng)創(chuàng)建好后進(jìn)入發(fā)送階段,服務(wù)端需要根據(jù)用戶(hù)的終端信息進(jìn)行路由,如果是IOS的系統(tǒng)蘋(píng)果的系統(tǒng),那么則會(huì)調(diào)用蘋(píng)果自身的推送信息機(jī)制來(lái)進(jìn)行推送,這個(gè)信息推送通常是統(tǒng)一的稱(chēng)為APNs,如果用戶(hù)手機(jī)是安卓系統(tǒng),那么會(huì)根據(jù)不同廠(chǎng)商的方法去調(diào)用不同廠(chǎng)商的sdk進(jìn)行消息的推送,對(duì)于不同的系統(tǒng)版本支持消息的展現(xiàn)形式也是不相同的,例如蘋(píng)果的系統(tǒng)在iOS10以后,APP在前臺(tái)時(shí)是否通知欄展示此樣式是用戶(hù)可以靈活調(diào)整的。而安卓相對(duì)比較復(fù)雜,如果不是對(duì)接廠(chǎng)商相關(guān)的通道,那么內(nèi)部服務(wù)可能無(wú)需做過(guò)多復(fù)雜的開(kāi)發(fā)工作,通過(guò)第三方消息推送平臺(tái)來(lái)實(shí)現(xiàn)推送,比如信鴿、個(gè)推等等,但是是否能成功的將信息推送到客戶(hù)端的SDK回執(zhí)數(shù)據(jù)反饋給發(fā)送方需要提供回調(diào)地址這個(gè)是需要設(shè)置的。接下來(lái)我們會(huì)對(duì)比三種方式,廠(chǎng)商通道,第三方推送服務(wù)和長(zhǎng)鏈接,把各自的優(yōu)勢(shì)進(jìn)行對(duì)比,由此來(lái)去判斷我們應(yīng)該使用什么樣的方式來(lái)進(jìn)行推送。
下發(fā)推送的三種類(lèi)型:
第一類(lèi):推送賬號(hào)
推送客戶(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è)來(lái)進(jìn)行使用;如果使用自己長(zhǎng)連接,則去自己的SDK進(jìn)行注冊(cè),作為后續(xù)推送的標(biāo)識(shí)用戶(hù)的唯一ID。這個(gè)現(xiàn)在是同行的辦法。
消息路主要講解根據(jù)不同的業(yè)務(wù)場(chǎng)景,可能會(huì)定向推送給不同版本APP的用戶(hù)。因此服務(wù)端在通道能力路由的時(shí)候,不僅需要能夠區(qū)分通道,還要進(jìn)一步能夠針對(duì)用戶(hù)的手機(jī)終端進(jìn)行更加精細(xì)化的差異推送。
對(duì)于公司內(nèi)部運(yùn)營(yíng)或公司的相關(guān)數(shù)據(jù)均是以產(chǎn)品的id為準(zhǔn),用戶(hù)數(shù)據(jù)系統(tǒng)對(duì)接消息系統(tǒng)時(shí)也多為id,因此需建立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)需要提供全量推送功能。