標籤:

安卓的通知系統和iOS的比較?

比如微信,我在iOS上不用打開微信運行即可接收到微信好友發的通知,為什麼在安卓上不可以?還需要保證微信一直處於運行的狀態。這樣看起來,是不是安卓的通知系統沒有iOS的好呢?這樣的話,第一是非常麻煩,第二是很浪費系統資源,大家怎麼看呢?


@Jerrysun0227的答案已經說的很完善了,我只是替酷安網友說句話:在國內數以億計的安卓用戶里,有那麼連1%都不到的一小部分人,他們沒日沒夜的折騰GMS、shadow socks,只是為了能讓微信消息通過GCM推送。甚至有人在自己開發的程序中引入了對GMS的支持。他們視iOS為異類,卻對安卓混亂的後台機制痛心疾首。

儘管GMS永遠不會解禁,儘管訪問GMS困難重重,但正是這一小部分人、盡著極其微小的力量,在別人冷眼評論打嘴炮的時候,默默推動著安卓生態的健康化。

事實就在那裡,如果大家只看不做,那問題永無解決的可能。

好憂傷,讓我打開黃易新聞緩一緩,逃(


這不怪安卓,怪天朝。


-------------2015-04-29 更新----------

感謝 @黃海洋 對回答的評論,粘貼在此,讓回答更完善

iphone聯網時告訴APS,然後APS獲取notification下發,如果已聯網呢? 個人覺得在這點並無差異,同樣是長鏈接,只是一個是系統進程,第三方推送一般是用戶進程,差別在這。

感謝 @Jeffrey Lin 對回答的評論,粘貼在此,讓回答更完善

iOS也是建立長連接。和安卓上的應用的推送沒有本質區別。本質的區別在於,iOS只允許iOS系統自己和蘋果的伺服器建立唯一的長連接,所有的第三方應用的推送都必須通過蘋果自己的伺服器來推送到用戶的iOS系統上,再由iOS系統通知第三方應用。而安卓沒有任何限制,任何程序都可以在後台建立自己的長連接,連接到自己的伺服器,推送任何信息。結果當然是安卓後台有無數個程序在運行,建立了無數個長連接,連接到各自的伺服器,共同吞噬著手機的電量。

另,我只是拋磚引玉,有不正之處歡迎指正,我會聽取建議並及時修改,以免誤人子弟(^-^)

-------------初始回答-------------------

根本的原因是推送機制不一樣造成的。

ios用的是APNS,蘋果公司統一的推送平台。Android原本是可以使用Google自家的GCM的,但是在國內就只能用第三方的推送平台,原因大家都懂的。

簡單說就是你的iPhone聯網後伺服器就會知道,也就是iPhone發送了消息到APNS,注意,這裡是iPhone發送,而不是應用發送。我想這也是在國內iOS跟Android在推送上的最根本的區別吧。iPhone告訴APNS自己聯網以後,APNS應當會查找所有需要下發到這台iPhone的消息,然後一股腦的發到這台iPhone上,最後由這台iPhone自己在分發到不同的應用並且在相應的應用圖標的右上角顯示個數字。但是Android則不一樣,Android是需要APP不斷的發送請求告訴伺服器我連著網呢,這時伺服器就知道,噢,這傢伙連著網呢,我去看看有沒有這傢伙的消息,如果有則將消息發送給你。這種機制,從技術上講叫做長連接,實現的方式就是發心跳包。如果很長時間沒有心跳包,則伺服器就認為該APP「死」了,也就是沒有網路連接,而當聯網後,只要APP還在後台(前台)運行,就會立刻告訴伺服器,我連網了,我連網了,快給老子看看有沒有我的消息,有就趕緊發給我。


安卓通知系統和IOS比較:

Android的狀態欄在左邊會顯示新通知的圖標,所以不用下拉就能大體知道有什麼通知。並且Android的通知圖標類似OSX Dock上的圖標是可以實時更新的,比如說Shadowsocks就可以實時地顯示網路速度。


ios的狀態欄在有網路訪問的時候會顯示一個Loading的Indicator,與之對應Android在ICS和JB時代會在網路連接的圖標上顯示小箭頭表示數據活動。但是這個小箭頭一般的用戶很難察覺並且會消耗一些系統資源,所以在Kitkat上被移到了快速設置面板裡頭。此外原生Android系統在無法正常訪問Google伺服器的時候網路連接的圖標會變顏色。

ios 的狀態欄有一個特性就是當前運行的應用可以在上頭顯示任何文字,比如讀知乎會在狀態欄上顯示緩存進度,QQ會在狀態欄上顯示未讀消息。ios7更是允許應用定製狀態欄主題把狀態欄作為與應用合為一體的一部分,不過這個特性沒過幾個月就被Kitkat山寨過去了。(準確來說Kitkat只是提供了這個API,第三方應用願意做成這樣是可行的,但是Google自家的應用還是保留了傳統的黑色狀態欄)

iOS有一個全局的,相當鍵盤上的Home鍵的手勢——觸模狀態欄。

區別:

安卓自由開放,可以隨意安裝各種各樣的軟體、插件,ios閉源,在不越獄的情況下只能從appstore下載軟體。

安卓系統會被各種通知打擾,ios對於通知和蜂窩數據的管理相對會完善一些。

安卓系統使用方便,可以隨便往手機裡邊放文件,而ios只能通過itunes進行管理。

安卓系統的流暢性和穩定性要遜於ios。


肯定沒有IOS的好,google其實有自己的推送服務,類似蘋果,但是和諧了,所以出現了國內的各種push,還有的公司覺得什麼都用自己的好就用自己的推送服務

浪費資源是一定的


看了一些答案

感覺就好像

國內能用GCM

BAT的app就不會常駐後台互相喚醒了一樣


我是個有強迫症的人,同時我很懶

以前用安卓的時候,在強迫症的作用下,我的通知欄常年乾乾淨淨。

而換了iOS,通知欄不能一鍵清空,在懶的作用下,我的通知欄亂七八糟。


iOS的所有應用都是依靠蘋果提供的伺服器來推送通知,所以就算你沒打開應用也能推送到。

Google也在安卓上提供了GCM推送服務,凡是在Google Play下載的應用基本上都遵循了這個機制,這樣應用就不會一直在後台佔用內存了。

然後重點是在中國大陸銷售的設備必須閹掉Google框架,就算你裝了框架也要翻牆才能接收到GCM推送,所以國內的應用不得不留一大堆後台進程實時監控推送,比如國產毒瘤QQ、微信、微博、貼吧等等都是這樣乾的,這才導致了安卓在你們心目中是卡翔、費電的形象。。


iOS可經蘋果伺服器發push,谷歌的伺服器你懂的~?

參考http://www.zhihu.com/question/21514839


推薦閱讀:

iPhone6s升級iOS11會不會卡?耗電怎麼樣?
為什麼部分 Android 用戶不喜歡用 iOS 系統?
小米盒子是怎麼實現 iOS 設備 AirPlay 播放的?
iOS 的數據流量為什麼不能僅在需要時開啟?
你用過最爛的 iOS App 有哪些?

TAG:iOS | Android |