IOS下我們很多人天天開着 郵件推送 微信推送 QQ推送 微博推送 新浪微博推送,安卓敢嗎? 五個后台進程消耗電、流量誰敢這么做?現在安卓也出了推送,但絕對是偽推送。實際是掛了個進程,關掉了就收不到。
android和pc模式的原理是,你掛着QQ,你的手機就連着qq的服務器,你掛着msn,你的手機就連着msn的服務器……還有日程軟件、電郵客戶端、天氣軟件、股票、新聞、微博……他們在后台的情況下,統統都連着各自的服務器。因此造成的影響是:流量大,耗電。
推送的原理是,iphone連着唯一的一條連接到apple的服務器,由apple的服務器連接到各種郵件、天氣、qq、微博服務器。平時就靠apple的服務器與各服務器溝通,有新消息時,才告訴iphone。因此非常省流量,而且省電。iphone可以把所有的第三方進程kill掉,系統底層維持着與apple服務器的連接。而android必須保留進程才能接收信息。我覺得,ios和wp7的這種模式才是明智的。
以下為摘抄,有耐心的人看下去吧
------------------------------------------------------------------------------------
推送系統最早其實是黑莓的專利,后來ios非常聰明的學去了,而且學的很好。在推送之前很多智能系統只能通過輪詢的方式不斷定期向服務器詢問是否有新信息,往往費電和費流量。
ios建立了一個統一的服務器,APNS(Apple Push Notification Service),簡單的說,我們在手機上接收到的所有推送信息都來源於這個服務器,每一台ios設備都有一個獨立的識別碼相當於身份證。那么當你用這個身份證登錄了某個軟件(比如米聊)后,就連接到了米聊的服務器上,在推送體系中這個目標服務器被稱作Provider。接着你看完消息,退出米聊后,進程結束,但是此時你這個身份證的登錄狀態並沒有在Provider里注銷,而是保留了。因此如果有人給你的米聊發送了信息,就會觸發Provider的行為,但是由於你關閉了米聊,所以它無法直接向你的手機發送消息,於是它轉而向APNS發送信息,順便帶着你的身份證。然后萬能的APNS就順着身份證找到你,然后把消息塞到你的手機里。只要你ios設備的推送不關閉,流量不關閉,那么你的設備就會一直和APNS保持連接,從而達到24小時接受推送信息的目的。有人應該已經明白了這樣做的好處,因為你只和一個服務器產生連接,省電省流量。另外由於APNS服務器的廣域和強大的穩定性,以及該服務在ios屬於固定的API接口,使得整個推送系統穩定而健壯。不過順便一提ios的郵件推送是另一套完整的PushMail系統,和這個無關。
那么為什么安卓的推送沒有ios給力?其實在Android2.2之后,谷歌也建立了類似ios一樣的推送系統——Android Cloud to Device Messaging(C2DM),但是為什么這個系統沒有APNS給力呢?主要是C2DM的服務器對於國內來說是外面的東西,由於谷歌在國內受到了一些格外的照顧,這個服務器也就顯得不那么給力,這是國內廠商多不選擇C2DM的重要原因。另外Android開源和API的開放提供了其它推送的選擇。在C2DM不給力的情況下,一些軟件選回了老的輪詢方式的(凡是軟件里需要你自己選擇多長時間檢查一次有沒有更新的軟件都是輪詢方式)來提供消息,這種方式有相當的不穩定因素,在機器內存緊張的情況下駐留的http服務容易被回收,還更費電費流量。更多軟件廠商則選擇了利用Android的自由的XML的API接口自己搭建XMPP服務器來直接向用戶推送消息,缺點同樣是駐留的服務容易被回收,尤其對於小內存機器和在內存管理上時常有技術性溢出(回收機制缺陷)的MIUI來說如果不鎖定服務的內存那么就可能出現收不到推送的情況。總體看來由於安卓推送機制的缺陷和進程的不統一(你裝米聊微信微博就等於后台有了三個推送進程),整體上的健壯性得不到保證,也更加費電和費流量,與ios統一而健壯的推送服務有了很大的差距。
綜上所述安卓系統的推送問題是並不是MIUI小組可以企及的,就算MIUI強勢到能夠建立一個q1an9內的推送服務器,也需要說服眾多的軟件廠商去使用他們的服務器,這就意味着需要有“米聊MIUI版”“微博MIUI版”,更加加劇了安卓生態圈的分裂。
至於在Android4.0時代安卓能否改變這個現狀我只能持謹慎樂觀態度,因為其開源性和向下兼容的API整合使得這種現狀更有可能延續下去而不是改善。
