Android推送方案調(diào)研

本文寫(xiě)于2017年5月2日,隨著技術(shù)演進(jìn)可能有不準(zhǔn)確的情況,歡迎指正。

現(xiàn)狀

鑒于國(guó)內(nèi)Android開(kāi)發(fā)的生態(tài)環(huán)境,國(guó)產(chǎn) ROM 無(wú)法使用 GCM 推送,就催生了很多推送方案來(lái)替代GCM,目前的推送方案按照推送通道可以簡(jiǎn)單劃分為三種:

系統(tǒng)級(jí)推送
  • 特征:系統(tǒng)級(jí)長(zhǎng)連接,實(shí)現(xiàn)方式類(lèi)似于IOS 平臺(tái) APNS。
  • 廠商:有能力控制上游ROM的廠商,在系統(tǒng)中內(nèi)置自己的推送服務(wù)通道,如 Google GCM、小米推送、華為推送 等
  • 優(yōu)點(diǎn):使用系統(tǒng)服務(wù),省電,可靠,成功率高,app被完全殺死后仍能收到推送。
  • 缺點(diǎn):Android 平臺(tái)碎片化問(wèn)題,各家的服務(wù)通道不能通用,GCM 只能在有完整Google 服務(wù)框架的手機(jī)上使用,其他類(lèi)似。
三方推送
  • 特征:app級(jí)長(zhǎng)連接通道。標(biāo)配:由系統(tǒng)事件廣播?;钸M(jìn)程。pro:獨(dú)立進(jìn)程,共用長(zhǎng)連接,鏈?zhǔn)絾拘训取?/li>
  • 廠商:提供推送及增值服務(wù),如友盟推送、個(gè)推、騰訊信鴿、百度云推送等
  • 優(yōu)點(diǎn):通用性較強(qiáng),各種ROM上都能用,app在活動(dòng)時(shí)成功率與系統(tǒng)級(jí)推送相當(dāng)。
  • 缺點(diǎn):app被殺死后成功率較低,這點(diǎn)在國(guó)產(chǎn)ROM上尤為明顯。進(jìn)程?;睢㈡?zhǔn)絾拘褧?huì)導(dǎo)致耗電量增加。進(jìn)程?;詈蛦拘褭C(jī)制受限于系統(tǒng)及各種優(yōu)化軟件。
混合推送
  • 特征:同時(shí)包含系統(tǒng)級(jí)長(zhǎng)連接通道和 app 級(jí)長(zhǎng)連接通道
  • 廠商:小米推送,阿里云推送,LeanCloud Push,極光推送等。
  • 優(yōu)點(diǎn):適應(yīng)性比純系統(tǒng)級(jí)推送強(qiáng),成功率相對(duì)純?nèi)酵扑洼^高
  • 缺點(diǎn):除小米推送外,其他推送方式都是以膠水的方式捆綁了系統(tǒng)級(jí)推送和自家三方推送(類(lèi)似于友盟分享),開(kāi)發(fā)成本相對(duì)稍高。

三方推送采用的進(jìn)程?;钜约版?zhǔn)絾拘鸭夹g(shù),流不流氓暫且不表,但一直是國(guó)內(nèi) ROM 廠商和系統(tǒng)優(yōu)化軟件嚴(yán)打的對(duì)象。
三方推送廠商所謂的 “需要把應(yīng)用加到【自啟動(dòng)管理】列表”等設(shè)置, 站在用戶(hù)的角度顯然是不現(xiàn)實(shí)的。
隨著 Android 系統(tǒng)版本迭代過(guò)程中對(duì)系統(tǒng)權(quán)限控制的收緊,以及ROM廠商的省電策略,單一的三方推送成功率只能用慘不忍睹來(lái)形容。
為了提高成功率,使用多通道推送是一種必要卻又無(wú)奈的做法。

推送效果簡(jiǎn)單對(duì)比

首先要了解一些推送的基本條件。

通知與透?jìng)飨?/h6>
  • 在系統(tǒng)級(jí)推送中,通知交給相應(yīng)的PushSDK處理,透?jìng)饔晌覀冏约篈pp處理。
  • 透?jìng)飨⒖梢宰远x消息內(nèi)容,擁有更大的靈活度;通知消息格式較為死板固定。
  • 根本區(qū)別在于通知消息走的是系統(tǒng)公用通道,透?jìng)飨⒆叩氖莂pp私有通道;對(duì)于小米推送、華為推送來(lái)說(shuō),只有采用通知消息,到達(dá)率才有保證,透?jìng)飨?,與三方推送并沒(méi)有什么區(qū)別。
  • 在三方推送中,其提供的通知和透?jìng)飨⒆叩亩际莂pp級(jí)通道。
app 運(yùn)行狀態(tài)
  • app 運(yùn)行時(shí)在網(wǎng)絡(luò)正常的情況下,各家推送服務(wù)送達(dá)效果相當(dāng),只是延遲有差異
  • app 被殺死后,系統(tǒng)級(jí)推送在對(duì)應(yīng)平臺(tái)有著天然的優(yōu)勢(shì),但僅限于通知類(lèi)型的消息。透?jìng)飨⑴c三方推送的結(jié)果類(lèi)似,在國(guó)產(chǎn)ROM上直接“陣亡”了。
下面主要對(duì)比App被殺死后發(fā)推送的測(cè)試結(jié)果:

測(cè)試機(jī)型:

  • Nexus5 Android 6.0.1
  • 一加3T 刷MIUI v8 (基于Android 6.0.1)
  • 小米note MIUI v7 (基于Android 4.4)
  • 華為 Mate9 EMUI5.0 (基于Android 7.0)
  • 華為 Mate7 (基于Android 4.4)

√ 收到 x不能收到 - 未測(cè)試

通知消息:
推送方式 原生Android MIUI v8 MIUI v7 EMUI 5.0 EMUI 3.0
Google GCM x x x x
小米推送 x -
華為推送 x x x x
LeanCloud Push x x x -
透?jìng)飨ⅲ?/h6>
推送方式 原生Android MIUI v8 MIUI v7 EMUI 5.0 EMUI 3.0
Google GCM x x x x
小米推送 x x x -
華為推送 x x x x x
LeanCloud Push x x x -
  • 華為推送
    app被殺死后在EMUI 5.0 系統(tǒng)下仍能收到通知消息,透?jìng)飨⒔邮帐?br> 僅支持 EMUI 5.0以上版本,低版本和其他ROM 創(chuàng)建連接失敗,完全不能使用。

  • 小米推送
    app被殺死后在MIUI系統(tǒng)下仍能收到通知消息,透?jìng)飨⒔邮帐?br> 非MIUI系統(tǒng)下,小米推送可以使用app級(jí)通道,此時(shí)與三方推送類(lèi)似

相對(duì)而言,小米推送的完成度更高,在系統(tǒng)推送的基礎(chǔ)上實(shí)現(xiàn)了三方通道,兼容了非 MIUI 的 Android 機(jī),而且有 IOS 平臺(tái)的SDK,在一定程度上可以替代三方推送。華為推送僅支持自家EMUI 5.0以上系統(tǒng)。

結(jié)論:

  • 如果是從零開(kāi)開(kāi)始開(kāi)發(fā),只接入小米推送,就可以覆蓋到大部分 Android 機(jī)型,并且可以在 MIUI 上獲得加成。
  • 如果追求高送達(dá)率,可以采用目前已知的“捆綁”混合推送方案例如:阿里云推送,極光推送等。
  • 如果項(xiàng)目中已經(jīng)接入了三方推送而效果又不理想,可以考慮單獨(dú)接入小米、華為等平臺(tái)的 SDK 來(lái)提高在國(guó)產(chǎn) ROM 上的送達(dá)率,需要自行處理數(shù)據(jù)整合的問(wèn)題。
混合推送參考文檔

阿里云推送 費(fèi)用參考 :目前支持小米和華為
LeanCloudPush 費(fèi)用參考 :目前支持華為和魅族,暫不支持小米
極光推送 : 目前支持小米、華為和魅族
小米推送

關(guān)于推送方案,可以參考另外兩篇文章:
集成第三方推送最佳實(shí)踐
Android端外推送到底有多煩?
推送 從入門(mén)到放棄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容