由于目前Android系統(tǒng)殺進(jìn)程越來越厲害了,這對(duì)于應(yīng)用在Push及時(shí)到達(dá)上有高要求的感到壓力很大,所以前段時(shí)間在項(xiàng)目中考慮第三方Push服務(wù)時(shí)更多的想要有更強(qiáng)的保活功能。
--
目前我們常用的幾大Push,小米Push,華為Push,JPush,友盟,個(gè)推,百度云推送在進(jìn)行對(duì)比中我使用了小米Push,華為Push,和百度云Push。
市場(chǎng)上其他應(yīng)用是怎么做的
--
如果Android系統(tǒng)級(jí)別推送GCM能在中國(guó)使用,那么這些也就沒有必要討論,我們也就能像IOS推送一樣方便,實(shí)際上我們卻用不了,那么同樣大家都遇到一樣的問題。其他人是怎么解決的呢?
以下幾點(diǎn)是個(gè)人的大概的幾點(diǎn)統(tǒng)計(jì)
- 微信
- 百度全家桶
- 小米Push/華為Push
這里只是簡(jiǎn)單的說下這三個(gè)很有代表意義的Push
- 微信的占有率極其高,并且用戶對(duì)其粘性非常強(qiáng),這讓我想起我在中學(xué)時(shí)代手機(jī)營(yíng)業(yè)廳里每部手機(jī)都會(huì)告訴你能登QQ,時(shí)代換湯不換藥那么現(xiàn)在是如果一部手機(jī)居然收不到微信消息,肯定不是微信的原因一定是手機(jī)有問題,所有大家很快也就明白為什么每臺(tái)手機(jī)即使有后臺(tái)強(qiáng)殺也會(huì)自動(dòng)把微信加入白名單,如果我的應(yīng)用能被加入白名單那真是太幸福了。
- 說百度全家桶可不是說裝了一個(gè)百度應(yīng)用就裝所有百度其他應(yīng)用,但實(shí)際效果差不多只要你打開一個(gè)百度應(yīng)用,那么基本上手機(jī)上的其他百度應(yīng)用都會(huì)在后臺(tái)被喚醒,Push自然而然的都能收到,這里也不止百度這么做,阿里也同樣會(huì),不過這種方式在以后中會(huì)被系統(tǒng)禁用。
- 小米Push是系統(tǒng)級(jí)別的Push,就像IOS和Android的GCM原理一樣,在一個(gè)手機(jī)中的所有應(yīng)用有同樣一條Push服務(wù),應(yīng)用完全不用打開就能及時(shí)收到所有Push,加上小米手機(jī)的占有率這一點(diǎn)也是不可忽略的,同樣華為Push也是一樣,并且在我了解中大部分應(yīng)用都集成了小米Push,華為Push,和其他。
說說第三方Push
JPush
--
JPush是我最早使用過的Push,但是由于他在進(jìn)程?;钌系淖龇ú荒軡M足我的要求所以被放棄了
JPush的?;钤诠俜轿臋n說明:<!-- since 1.8.0 option 可選項(xiàng)。用于同一設(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>
也就是只要配置文件配置這一項(xiàng)那么其他同樣集成JPush應(yīng)用啟動(dòng)時(shí)就會(huì)把你喚醒,這種就是我們常用的`Intent` `setAction(X)`方式,通過`intent-filter` 搜索所有注冊(cè)了對(duì)應(yīng)`action`的應(yīng)用信息 ####友盟推送 -- 官方原話:實(shí)現(xiàn)了同一設(shè)備多 APP共享一個(gè)長(zhǎng)連接、智能心跳等優(yōu)化方案。消息發(fā)送速度快,長(zhǎng)連接穩(wěn)定,設(shè)備能耗低。 測(cè)試也發(fā)現(xiàn)多個(gè)APP只要都是集成的友盟推送,那么在一臺(tái)設(shè)備中只要有且有一個(gè)應(yīng)用Push連接正常,那么其他所有的集成友盟Push的APP不用啟動(dòng)也能收到Push。 #### 百度云,個(gè)推推送 -- 百度云推送和個(gè)推推送在推送原理上基本和友盟類似,這種方式也是一種虛擬系統(tǒng)級(jí)別推送。百度云推送在啟動(dòng)的百度地圖后你的應(yīng)用可以做到不打開也能接受到Push,并且初步的測(cè)試發(fā)現(xiàn)百度喚醒對(duì)應(yīng)的需要喚醒的包名對(duì)應(yīng)文檔保存在Sd卡中,同樣集成的百度云推送的啟動(dòng)后會(huì)在SD文檔中加入自己的包名,由于是加密的我也就沒看得很明白,百度云推送接受到Push后會(huì)首先通過廣播形式發(fā)送給目標(biāo)應(yīng)用,廣播不行才會(huì)通過啟動(dòng)對(duì)應(yīng)的`Service`。 個(gè)推說的新浪微博也集成了自己,反編譯后倒是沒發(fā)現(xiàn)。 #### 小米Push,華為Push -- 對(duì)于這兩者來說也沒有太多探討,這是在他們自己系統(tǒng)上最好的實(shí)現(xiàn)方式,但是到其他系統(tǒng)就基本和別人沒什么區(qū)別。 #### 總結(jié) #### 1.JPush的 對(duì)JPush來說我也不知道他到底好壞,比較中庸,用了不能很好的提高?;?,同時(shí)喚醒是相互(可以去揣摩是不是真的一定相互)的。 #### 2.友盟,個(gè)推,百度云 #### 好處 * 推送到達(dá)率和及時(shí)率提高 * 手機(jī)耗電會(huì)減少 #### 壞處 * 耗電會(huì)集中在打開率最高的應(yīng)用上 #### 3. 小米,華為推送 #### 好處 * 最方便的實(shí)現(xiàn),最高到達(dá)率 #### 壞處 * 基本只能在他們自己系統(tǒng)才能達(dá)到這種效果