⑴ iOS 和 android 的後台推送原理各是什麼有什麼區別
iOS 系統的推送(APNS,即 Apple Push Notification Service)依託一個或幾個系統常駐進程運作,是全局的(接管所有應用的消息推送),所以可看作是獨立於應用之外,而且是設備和蘋果伺服器之間的通訊,而非應用的提供商伺服器⑵ ios和android的後台推送工作原理各是如何有什麼區別
iOS 系統的推送(APNS,即 Apple Push Notification Service)依託一個或幾個系統常駐進程運作,是全局的(接管所有應用的消息推送),所以可看作是獨立於應用之外,而且是設備和蘋果伺服器之間的通訊,而非應用的提供商伺服器。你的例子裡面,騰訊 QQ 的伺服器(Provider)會給蘋果公司對應的伺服器(APNs)發出通知,然後再中轉傳送到你的設備(Devices)之上。當你接收到通知,打開應用,才開始從騰訊伺服器接收數據,跟你之前看到通知里內容一樣,但卻是經由兩個不同的通道而來。
而 Android,就不同,更像是傳統桌面電腦系統做法。每個需要後台推送的應用有各自的單獨後台進程,才能和各自的伺服器通訊,交換數據。另外其實 Android 也有類似 APNS 的 GCM(Google Cloud Message),屬於開發者可選,非強制。(更多請看本回答評論區裡面 @Bill Cheng 的補充)
所以你大概看出來區別,iOS 的消息推送機制面世之時是一種全新的解決方案(堪稱平台中的平台),應用本身不能有常駐的後台進程,系統的開銷少,內存使用更少,電量也更少(把更多的運算和資源開銷放在雲端,非設備端)。而 Android 的特點,雖然開銷大,優點是更穩定快速,但不明顯。
⑶ iOS 和 Android 的後台推送原理各是什麼有什麼區別
先說原理。
iOS 的推送:就是 Apple 官方的 APNs (Apple Push Notification service)。
Android 的推送:Google 官方的是 GCM (Google Cloud Messaging)。
本質上,APNs 與 GCM 是類似的技術實現原理:即系統層有一個常駐的 TCP 長連接,一直保持的長連接,即使手機休眠的時候也在保持的長連接。
這里對於大部分人來說,最不理解的就是,休眠時候都保持在那裡的 TCP 長連接,不會耗電很厲害么?
答案是:不會。這是手機的設計來做到的。TCP長連接有個心跳的時間,在國外可以很長比如30分鍾,在國內則因為網路環境復雜一般10分鍾。客戶端發起的心跳,會短暫地消耗手機電能,但在這個心跳間隔期間,則消耗電能是很少的。當在心跳期間伺服器端有推送信息過來時,客戶端可以收到並做處理。
這里有篇文章以 Android 為例做原理解釋:http://blog.jpush.cn/index.php/jpush_wireless_push_principle/
再說 APNs 的設計成功處。
iOS 為了真正地為用戶體驗負責,不允許應用在後台活動。有了這個限制,但是對於終端設備,應用又是有必要「通知」到達用戶的,隨時與用戶主動溝通起來的(典型的如聊天應用)。
這就是 APNs 的邏輯所在:iOS 自己做個長駐後台保持連接。所有應用,有必要(申請)並且被允許(用戶可以改設置)的話,可以通過 APNs 中轉到達用戶。
這樣就完善了!
有可能很多人沒有真正地體會到 iOS 不允許後台應用的好處。我是 Android 開發人員,Android 手機上一般只保留幾個常用的應用,不常用就卸載。但是我的 iPhone / iPad 上則是,除非空間不足,一般不會刪除應用。
Android 就像 Windows,你要真的很費心去維護:有軟體在干背後干壞事么?設備又給拖慢了,要清理。要考慮殺毒了。。。
Android 因為後台可以長駐,尤其是國內的 Android 的手機上 Google自家的推送服務 GCM 處於基本不可用的狀態。所以,各App各顯神通。聊天類應用的話,大多數直接借用 XMPP 規范里的一些成果。少量如微信有IM底子的,自己開發協議。這些在實現原理上與 APNs / GCM 沒有本質的區別,但有一定的技術門檻。而大多數普遍應用,要使用推送的話,則使用輪詢的方式簡單實現。
其實,國外如 Urban Airship 自己實現了 Android 上的第三方提供的推送平台。近期國內如極光推送也實現了第三方的推送平台(技術與微信、GCM、APNs類似)。理論上,如果一個 Android 設備上多款應用都使用極光推送這種第三方推送平台的話,也可以如 APNs 一樣達到節省電量、流量消耗的效果。
⑷ 請教安卓推送如何實現
幾種常見的解決方案實現原理:⑸ android 消息推送是什麼,消息推送一般是怎麼做的
是從伺服器不定的向手機客戶端即時推送各種通知消息。消息推送方法是:⑹ android消息推送原理是怎麼樣的
主要介紹其中的五種實現方式:短輪詢、Comet、Flash XMLSocket、Server-sent、WebSocket⑺ ...Android 的後台推送原理各是什麼有什麼區別
不是回答高質量啊,哎。拒絕了吧
iOS 在系統級別有一個推送服務程序使用 5223 埠。使用這個埠的協議源於 Jabber 後來發展為 XMPP ,被用於 Gtalk 等 IM 軟體中。所以, iOS 的推送,可以不嚴謹的理解為:
蘋果伺服器朝手機後台掛的一個 IM 服務程序發送的消息。
然後,系統根據該 IM 消息識別告訴哪個 Apps 具體發生了什麼事。
然後,系統分別通知這些 Apps 。應該說,蘋果這種方式在技術上沒有什麼創新。但是,整個架構是很了不起的。 因為:
1 使用久經考驗的協議,技術風險小。
2 蘋果勇於承擔責任:
他需要維護一個代價不小的伺服器集群,而且要為伺服器的 down 機負責。
選擇低風險的技術方案 Bug 更少,減輕了用戶的痛苦,這是構架師的功勞。
蘋果承擔責任,盡可能的減少了不可控的意外,保證了用戶體驗。
這,只能說是公司決策者的功勞。
(從側面說明有個懂技術的 VP 是多重要。。。而 Scott 走人了。。)
他們帶給用戶的好處也是實實在在的。
1 安全。
只有登錄過的開發者可以通過蘋果的伺服器推送。
2 快速,穩定,可靠。
蘋果掌控推送伺服器和 OS 。
3 更省電。
4 讓整個系統的體驗更統一和簡單。
不會出現殺後台這種腦殘事。(不用大量 Apps / Apps 的服務為了推送掛後台)。
也不會出現 Apps 被殺就收不到推送這種腦殘事(早一點的新浪微博 Android 版仍然如此)。
5 開發容易。
當然,開發者還是要做些事情,比如維護個伺服器什麼的: http://www.ifanr.com/3979。但是復雜度無疑降低很多了。
Android 的推送
Apps 掛後台一直是 Android 引以為豪的特性(雖然我真的不知道是好處多還是壞處多。。)。。。大家掛後台等待推送就成為技術選擇。
當然, Google 事後也提供類似蘋果的推送方式了。倒也談不上抄襲,畢竟蘋果的整個技術實現也沒有什麼特別創新之處。
用戶的電池?
Apps 的開發者不會站在系統層面考慮的。他會假設其他 Apps 沒有那麼「不自覺」。而 Google 不強制的結果就是:沒人真正為用戶的電池負責。
但是, Google 的方案也並非全是悲劇:
也因為整個技術方案非強制, Android 的 Apps 在接收到推送後的表現更為靈活。
像 Line 的 Android 版本可以在推送通知的 Popup 上直接回復, iOS 就需要越獄才能做到了。
最後的話
強制和封閉,有時候並非壞事。他意味著做出這個決定的人,要為此負責。
⑻ android消息推送怎麼實現
極光推送可以輕松實現android消息推送。具有操作步驟如下:⑼ Android消息推送整個鏈路大概分幾步
所謂的消息推送就是從伺服器端向移動終端發送連接,傳輸一定的信息。比如一些新聞客戶端,每隔一段時間收到一條或者多條通知,這就是從伺服器端傳來的推送消息;還比如常用的一些IM軟體如微信、GTalk等,都具有伺服器推送功能。