由于目前Android系統(tǒng)殺進(jìn)程越來越厲害了砰苍,這對于應(yīng)用在Push及時到達(dá)上有高要求的感到壓力很大,所以前段時間在項目中考慮第三方Push服務(wù)時更多的想要有更強(qiáng)的壁甯撸活功能赚导。
--
目前我們常用的幾大Push,小米Push赤惊,華為Push吼旧,JPush,友盟未舟,個推圈暗,百度云推送在進(jìn)行對比中我使用了小米Push,華為Push处面,和百度云Push厂置。
市場上其他應(yīng)用是怎么做的
--
如果Android系統(tǒng)級別推送GCM能在中國使用,那么這些也就沒有必要討論魂角,我們也就能像IOS推送一樣方便昵济,實際上我們卻用不了,那么同樣大家都遇到一樣的問題野揪。其他人是怎么解決的呢访忿?
以下幾點是個人的大概的幾點統(tǒng)計
- 微信
- 百度全家桶
- 小米Push/華為Push
這里只是簡單的說下這三個很有代表意義的Push
- 微信的占有率極其高,并且用戶對其粘性非常強(qiáng)斯稳,這讓我想起我在中學(xué)時代手機(jī)營業(yè)廳里每部手機(jī)都會告訴你能登QQ海铆,時代換湯不換藥那么現(xiàn)在是如果一部手機(jī)居然收不到微信消息,肯定不是微信的原因一定是手機(jī)有問題挣惰,所有大家很快也就明白為什么每臺手機(jī)即使有后臺強(qiáng)殺也會自動把微信加入白名單卧斟,如果我的應(yīng)用能被加入白名單那真是太幸福了殴边。
- 說百度全家桶可不是說裝了一個百度應(yīng)用就裝所有百度其他應(yīng)用,但實際效果差不多只要你打開一個百度應(yīng)用珍语,那么基本上手機(jī)上的其他百度應(yīng)用都會在后臺被喚醒,Push自然而然的都能收到锤岸,這里也不止百度這么做,阿里也同樣會板乙,不過這種方式在以后中會被系統(tǒng)禁用是偷。
- 小米Push是系統(tǒng)級別的Push,就像IOS和Android的GCM原理一樣募逞,在一個手機(jī)中的所有應(yīng)用有同樣一條Push服務(wù)蛋铆,應(yīng)用完全不用打開就能及時收到所有Push,加上小米手機(jī)的占有率這一點也是不可忽略的放接,同樣華為Push也是一樣刺啦,并且在我了解中大部分應(yīng)用都集成了小米Push,華為Push透乾,和其他洪燥。
說說第三方Push
JPush
--
JPush是我最早使用過的Push,但是由于他在進(jìn)程比槲冢活上的做法不能滿足我的要求所以被放棄了
JPush的保活在官方文檔說明:<!-- since 1.8.0 option 可選項市咆。用于同一設(shè)備中不同應(yīng)用的JPush服務(wù)相互 拉起的 功能汉操。 -->
<!-- 若不啟用該功能可刪除該組件,將不拉起其他應(yīng)用也不能被其他應(yīng)用拉起 -->
<service
android:name="cn.jpush.android.service.DaemonService"
android:enabled="true"
android:exported="true">
<intent-filter >
<action android:name="cn.jpush.android.intent.DaemonService" />
<category android:name="您應(yīng)用的包名"/>
</intent-filter>
</service>
也就是只要配置文件配置這一項那么其他同樣集成JPush應(yīng)用啟動時就會把你喚醒蒙兰,這種就是我們常用的`Intent` `setAction(X)`方式,通過`intent-filter` 搜索所有注冊了對應(yīng)`action`的應(yīng)用信息 ####友盟推送 -- 官方原話:實現(xiàn)了同一設(shè)備多 APP共享一個長連接磷瘤、智能心跳等優(yōu)化方案。消息發(fā)送速度快搜变,長連接穩(wěn)定采缚,設(shè)備能耗低。 測試也發(fā)現(xiàn)多個APP只要都是集成的友盟推送挠他,那么在一臺設(shè)備中只要有且有一個應(yīng)用Push連接正常扳抽,那么其他所有的集成友盟Push的APP不用啟動也能收到Push。 #### 百度云殖侵,個推推送 -- 百度云推送和個推推送在推送原理上基本和友盟類似贸呢,這種方式也是一種虛擬系統(tǒng)級別推送。百度云推送在啟動的百度地圖后你的應(yīng)用可以做到不打開也能接受到Push拢军,并且初步的測試發(fā)現(xiàn)百度喚醒對應(yīng)的需要喚醒的包名對應(yīng)文檔保存在Sd卡中楞陷,同樣集成的百度云推送的啟動后會在SD文檔中加入自己的包名,由于是加密的我也就沒看得很明白茉唉,百度云推送接受到Push后會首先通過廣播形式發(fā)送給目標(biāo)應(yīng)用固蛾,廣播不行才會通過啟動對應(yīng)的`Service`结执。 個推說的新浪微博也集成了自己,反編譯后倒是沒發(fā)現(xiàn)艾凯。 #### 小米Push昌犹,華為Push -- 對于這兩者來說也沒有太多探討,這是在他們自己系統(tǒng)上最好的實現(xiàn)方式览芳,但是到其他系統(tǒng)就基本和別人沒什么區(qū)別斜姥。 #### 總結(jié) #### 1.JPush的 對JPush來說我也不知道他到底好壞,比較中庸沧竟,用了不能很好的提高敝簦活,同時喚醒是相互(可以去揣摩是不是真的一定相互)的悟泵。 #### 2.友盟杈笔,個推,百度云 #### 好處 * 推送到達(dá)率和及時率提高 * 手機(jī)耗電會減少 #### 壞處 * 耗電會集中在打開率最高的應(yīng)用上 #### 3. 小米糕非,華為推送 #### 好處 * 最方便的實現(xiàn)蒙具,最高到達(dá)率 #### 壞處 * 基本只能在他們自己系統(tǒng)才能達(dá)到這種效果