推送調研

App為什么要進行應用蓖7蓿活

其實搞保活的目的倒不是為了干什么見不得人的壞事(但不排除動機不純的開發(fā)者),主要是像IM即時通訊應用和資訊類應用等需要搞后臺消息推送时迫、運動類應用需要在后臺實時監(jiān)測用戶的運動數(shù)據(jù)等,因為現(xiàn)在越來越多的手機廠商為了省電策略考慮癞揉,基本上如果你的應用沒有被加入白名單溺欧,一旦處于后臺就會被系統(tǒng)限制甚至干掉,但使用APP的用戶才不聽你這些解釋——反正“我”就要你的APP能如期正常運行姐刁,開發(fā)者也是不得已而為之聂使。

實際上,對于后臺消息推送能力柏靶,Android原版系統(tǒng)早就內置了系統(tǒng)級推送服務(跟iOS上的APNS服務是一個東西),它就是GCM服務(現(xiàn)在升級為FCM了)痘昌,但眾所周之的原因,谷哥的服務在國內都是用不了的

Android各版本出現(xiàn)的绷咎Γ活技術

雙進程守護

主要設計AB兩個不同服務進程,A進程的服務輪詢檢查B進程的服務是否存活乎婿,沒存活的話將其拉起街佑,同樣B進程服務輪詢檢查A進程服務是否存活,沒存活的話也將其拉起

進程防殺

降低omm_adj值森逮,盡量保證進程不被系統(tǒng)殺死

進程在內存中時活動主要有五種狀態(tài):即前臺進程磁携、可見進程、服務進程谊迄、后臺進程、空進程歪脏,這幾種狀態(tài)的進程優(yōu)先級由高到低,oom_adj值由低到高(在ProcessList定義)婿失。然后Android系統(tǒng)會根據(jù)當前系統(tǒng)資源和進程oom_adj值來回收相應的進程啄寡,前臺進程一般不會被回收,空進程最容易被回收

實現(xiàn)方案:前臺Service 一像素鎖屏 后臺循環(huán)播放一段無聲廣播

進程被殺復活

JobScheduler是谷歌在Android 5.0引入的一個能夠執(zhí)行某項任務的API懒浮,它允許APP在將來達到一定條件時執(zhí)行指定的任務姻乓。通常情況下,即使APP被強制停止蹋岩,預定的任務仍然會被執(zhí)行

第三方推送平臺

極光推送
友盟推送
個推
阿里云移動推送
騰訊信鴿
百度云推送

特征:app級長連接通道剪个;由系統(tǒng)事件廣播保活進程,獨立進程绒疗,共用長連接骂澄,鏈式喚醒等
廠商:提供推送及增值服務,如友盟推送磨镶、個推健提、騰訊信鴿、極光推送等
優(yōu)點:通用性較強私痹,各種ROM上都能用,app在活動時成功率與系統(tǒng)級推送相當
缺點:app被殺死后成功率較低账千,這點在國產ROM上尤為明顯癞蚕。進程保活桦山、鏈式喚醒會導致耗電量增加恒水。進程彼瞧耄活和喚醒機制受限于系統(tǒng)及各種優(yōu)化軟件

第三方推送一般使用長連接和應用間互相喚醒的方式來保證推送的到達率,但是此種方式用戶體驗很差捂人,存在內存大量占用以及電量消耗加快等負面影響。而且 Andoird 5.0 之后酸纲,后臺進程以及定時任務的限制瑟匆,保持長連接正在變得越來越困難,所以即使是極光疾嗅、友盟等這樣專業(yè)的推送平臺,達到率也不會有他們宣稱的那么高代承,一般估計在 50%~70%,甚至更低掖棉。不過意荤,可以考慮通過商務合作手段讓手機廠家給應用開白名單

第三方平臺的推送服務的優(yōu)點是通道聚合,接入成本低紫谷。缺點除了上面提到的到達率不如系統(tǒng)級推送捐寥,另外還有用戶數(shù)或設備數(shù)的限制,也就是說在量大的情況下部分推送平臺需要收費握恳。

第三方推送平臺對比

平臺 是否收費 廠商通道支持 到達率 集成難度
友盟 支持 較高
極光 高級版收費 支持 一般
個推 VIP收費 支持 一般
阿里移動推送 設備數(shù)>5萬收費 支持 一般 一般
騰訊信鴿 支持 一般 一般
百度云推送 不支持 一般

通道

目前擁有廠商通道的廠商有:小米乡洼,華為,魅族束昵,OPPO,VIVO

  1. 阿里云使用淘寶通道
  2. 騰訊信鴿使用的是騰訊系游戲的通道(沒有微信或QQ通道)
  3. 個推有微博巴比,網(wǎng)易新聞礁遵,滴滴等
  4. 小米推送在miui上使用系統(tǒng)通道,非miui手機上政勃,自己一個通道晰赞,不共享通道
  5. 華為推送在華為手機上使用系統(tǒng)通道选侨,在非華為手機上使用需要額外安裝一個app
  6. 極光和個推都是有廠商通道服務然走,但是基本都是針對VIP收費用戶

廠商通道

小米推送

小米推送在miui上使用系統(tǒng)通道,非miui手機上晨仑,自己一個通道拆檬,不共享通道;app被殺死后在MIUI系統(tǒng)下仍能收到通知消息答捕;非MIUI系統(tǒng)下屑那,小米推送可以使用app級通道,此時與三方推送類似

華為推送

華為推送在華為手機上使用系統(tǒng)通道持际,在非華為手機上使用需要額外安裝一個app;app被殺死后在EMUI 5.0 系統(tǒng)下仍能收到通知消息益眉;僅支持 EMUI 5.0以上版本姥份,低版本和其他ROM 創(chuàng)建連接失敗,完全不能使用

自啟動管理:需要把應用加到【自啟動管理】列表朱庆,否則殺進程或重新開機后進程不會開啟闷祥,只能手動開啟應用

后臺應用保護:需要手動把應用加到此列表傲诵,否則設備進入睡眠后會自動殺掉應用進程,只有手動開啟應用才能恢復運行

通知管理:應用狀態(tài)有三種:提示悟衩、允許栓拜、禁止惠昔。禁止應用則通知欄不會有任何提醒

魅族推送

在Flyme上屬于系統(tǒng)級服務挑势,共享系統(tǒng)級長連接,客戶端服務省電省流量

OPPO推送

在ColorOS上使用系統(tǒng)級通道来氧,共享ColorOS系統(tǒng)級長連接香拉,服務穩(wěn)定,保證消息的高到達率

VIVO推送

在Funtouch OS上共享系統(tǒng)級通道

  • 相對而言扑毡,小米推送的完成度更高盛险,在系統(tǒng)推送的基礎上實現(xiàn)了三方通道,兼容了非 MIUI 的 Android 機枉层,而且有 IOS 平臺的SDK,在一定程度上可以替代三方推送膜赃。華為推送僅支持自家EMUI 5.0以上系統(tǒng)揉忘。

  • 使用廠商通道會有如下問題:

    1. 需要一家一家下載SDK、注冊開發(fā)者賬號疲眷、搞手機端對接您朽、搞服務端對接;
    2. 各廠商的SDK都打包在一個APP里哗总,可能存在各種兼容性問題讯屈;
    3. 因為ROOM版本問題,即使同一個廠商的手機的同一套SDK也存在新舊ROOM的兼容性問題涮母;
    4. 這一堆的SDK躁愿,各種jar包讓你的APP莫名變大了不少彤钟;
    5. 服務端要對接各種廠商的推送后臺怜跑,各家的技術水平、SDK水準性芬、服務穩(wěn)定性參差不齊,對接起來有難度
    6. 有些手機小廠并沒有自已的推送通道辫樱,仍然需要自建通道俊庇。

實際測試總結

  • 接入小米推送,在小米手機上可以實現(xiàn)系統(tǒng)級的推送搬男,只要手機系統(tǒng)不掛彭沼,推送都會秒到;在其它手機上(魅族)褐奴,應用在前臺時于毙,推送秒到,應用在后臺未被殺掉時唯沮,推送秒到介蛉,若應用被清理掉或時間過長被系統(tǒng)清理掉時,推送無法到達(會在下次啟動APP時推送到)
  • 接入魅族推送甘耿,在魅族手機上是系統(tǒng)級推送竿滨,有1秒左右的延遲

總結

  • 如果選擇第三方推送平臺優(yōu)先選擇支持廠商通道的推送平臺
  • 如果是從零開開始開發(fā),只接入小米推送毁葱,就可以覆蓋到大部分 Android 機型,并且可以在 MIUI 上獲得加成
  • 如果項目中已經接入了三方推送而效果又不理想筷频,可以考慮單獨接入小米前痘、華為等平臺的 SDK 來提高在國產 ROM 上的送達率,需要自行處理數(shù)據(jù)整合的問題
  • 如果追求高送達率和接入成本坯癣,可以考慮已有的支持廠商通道的第三方推送平臺如:友盟最欠,極光,騰訊信鴿蚜点,個推等等
  • Amdroid7.0及之后拌阴,進程保活手段很難奏效撮躁;Android越往后迭代捺氢,限制越嚴格。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末悠反,一起剝皮案震驚了整個濱河市馍佑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茵臭,老刑警劉巖舅世,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缨硝,居然都是意外死亡,警方通過查閱死者的電腦和手機胖笛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門宜岛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谬返,“玉大人,你說我怎么就攤上這事遣铝。” “怎么了瘫絮?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵麦萤,是天一觀的道長扁眯。 經常有香客問我,道長姻檀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮杂抽,結果婚禮上,老公的妹妹穿的比我還像新娘铸磅。我一直安慰自己,他們只是感情好愚屁,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布霎槐。 她就那樣靜靜地躺著梦谜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闭树。 梳的紋絲不亂的頭發(fā)上荒澡,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天单山,我揣著相機與錄音,去河邊找鬼米奸。 笑死,一個胖子當著我的面吹牛慢睡,可吹牛的內容都是我干的铡溪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼髓涯,長吁一口氣:“原來是場噩夢啊……” “哼饲帅!你這毒婦竟也來了?” 一聲冷哼從身側響起育八,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤髓棋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后按声,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡须床,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年豺旬,在試婚紗的時候發(fā)現(xiàn)自己被綠了柒凉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坦刀,死狀恐怖蔬咬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情渴频,我是刑警寧澤北启,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布咕村,位于F島的核電站,受9級特大地震影響懈涛,放射性物質發(fā)生泄漏。R本人自食惡果不足惜宇植,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一埋心、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闲坎,春花似錦、人聲如沸腰懂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怖喻。三九已至,卻和暖如春罢防,著一層夾襖步出監(jiān)牢的瞬間唉侄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工恬叹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留同眯,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓硅确,卻偏偏與公主長得像明肮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子循未,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容

  • 最近開始做推送的妖,發(fā)現(xiàn) Android 平臺的推送服務實在是太多了足陨,于是就有了這篇推送調研文章。 首先赋元,iOS 設備...
    aJIEw閱讀 4,049評論 8 30
  • 由于谷歌服務在國內不能用,Android 的推送真是一大痛點媚值,但也推動了國內一批做第三方服務的廠商护糖。第三方推送...
    U卡技術閱讀 6,636評論 1 10
  • 本文寫于2017年5月2日,隨著技術演進可能有不準確的情況锰扶,歡迎指正寝受。 現(xiàn)狀 鑒于國內Android開發(fā)的生態(tài)環(huán)境...
    hwren2012閱讀 5,228評論 0 6
  • 前言消息推送在 Android開發(fā)中應用的場景是越來越多了很澄,比如說電商產品進行活動宣傳、資訊類產品進行新聞推送等等...
    龐哈哈哈12138閱讀 2,846評論 0 6
  • 回憶放不下蹂楣, 觸景傷情讯蒲, 物是人非痊土, 才發(fā)現(xiàn)自己有那么多難以割舍的牽掛墨林。 明天的天氣放不下, 連續(xù)幾天雨水打濕的鞋...
    一指清音閱讀 514評論 2 4