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