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