導航:首頁 > 操作系統 > android推送原理圖

android推送原理圖

發布時間:2022-07-16 12:02:43

⑴ iOS 和 android 的後台推送原理各是什麼有什麼區別

iOS 系統的推送(APNS,即 Apple Push Notification Service)依託一個或幾個系統常駐進程運作,是全局的(接管所有應用的消息推送),所以可看作是獨立於應用之外,而且是設備和蘋果伺服器之間的通訊,而非應用的提供商伺服器
所以, iOS 的推送,可以不嚴謹的理解為:蘋果伺服器朝手機後台掛的一個 IM 服務程序發送的消息。
然後,系統根據該 IM 消息識別告訴哪個 App 具體發生了什麼事。
然後,系統分別通知這些 App
而 Android每個需要後台推送的應用有各自的單獨後台進程,才能和各自的伺服器通訊,交換數據。
其實 Android 也有類似 APNS 的 GCM(Google Cloud Message)的服務,如果一個應用的推送採用這種模式的話,就和iOS推送一個樣了。
GCM相關的程序應該是集成在所謂的Gapps中,但國內的 Android 手機上 GCM 處於基本不可用的狀態,而且Android 因為後台可以長駐,所以,App們各顯神通。
聊天類應用的話,大多數直接借用 XMPP 規范里的一些成果。少量如微信有IM底子的,自己開發協議。這些在實現原理上與 APNs / GCM 沒有本質的區別,但有一定的技術門檻。
而大多數普遍應用,要使用推送的話,則使用輪詢的方式簡單實現,就是定時去伺服器上查詢數據,也叫Polling,還有一種手機跟伺服器之間維護一個 TCP 長連接,當伺服器有數據時,實時推送到客戶端,也就是我們說的 Push。
輪詢的方式不論怎麼優化都比較費電費流量,長連接的方式在網路不穩定的情況下,Socket比較容易斷開推送數據失敗,
安卓推送可以考慮使用第三方推送工具,比如極光推送

⑵ 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 一樣達到節省電量、流量消耗的效果。

⑷ 請教安卓推送如何實現

幾種常見的解決方案實現原理:
輪詢(Pull)方式:應用程序應當階段性的與伺服器進行連接並查詢是否有新的消息到達。必須自己實現與伺服器之間的通信,例如消息排隊等。而且還要考慮輪詢的頻率,如果太慢可能導致某些消息的延遲,如果太快,則會大量消耗網路帶寬和電池。
SMS(Push)方式:在Android平台上,可以通過攔截SMS消息並且解析消息內容來了解伺服器的意圖,並獲取其顯示內容進行處理。但是問題是這個方案的成本相對比較高,需要向移動公司繳納相應的費用。目前很難找到免費的短消息發送網關來實現這種方案。
Android平台上實現起來卻相對比較麻煩。使用IOS平台上已經有了比較簡單的和完美的推送通知解決方案。所以可以到極光了解一下。極光推送完整的消息生命周期查詢,並且可以形成「推送報表」與「用戶統計報表」呈現給開發者,用來觀察推送的效果和應用發展趨勢。

⑸ android 消息推送是什麼,消息推送一般是怎麼做的

是從伺服器不定的向手機客戶端即時推送各種通知消息。消息推送方法是:
1、可以通過SMS進行伺服器端和客戶端的交流通信。 可以通過攔截SMS消息並且解析消息內容來了解伺服器的意圖,可以實現完全的實時操作。
3、循環主動定時獲取
這種方法是需要客戶端來做一個定時或者周期性的訪問伺服器端介面,來獲得最新的消息。
3、持久連接
這個方案雖然可以解決由輪詢帶來的性能問題等各種問題,但是還是會消耗手機的電池。
消息推送可以選擇深圳極光,是一個不錯的軟體;也是是國內領先的移動開發者服務提供商。極光通過該一體化消息下發平台,助力行業客戶實現多通道高效精準觸達目標用戶。截至2021年3月,已有超173.1萬款APP在使用極光提供的服務。

⑹ android消息推送原理是怎麼樣的

主要介紹其中的五種實現方式:短輪詢、Comet、Flash XMLSocket、Server-sent、WebSocket
1、短輪詢
指在特定的的時間間隔(如每10秒),由瀏覽器對伺服器發出HTTP request,然後由伺服器返回最新的數據給客戶端的瀏覽器。瀏覽器做處理後進行顯示。無論後端此時是否有新的消息產生,都會進行響應
2、Comet
包括了長輪詢和長連接,長輪詢是客戶端向伺服器發送Ajax請求,伺服器接到請求後hold住連接,直到有新消息才返回響應信息並關閉連接,客戶端處理完響應信息後再向伺服器發送新的請求;長連接是在頁面中的iframe發送請求到服務端,服務端hold住請求並不斷將需要返回前端的數據封裝成調用javascript函數的形式響應到前端,前端不斷收到響應並處理
3、Flash XMLSocket
在 HTML 頁面中內嵌入一個使用了 XMLSocket 類的 Flash 程序。JavaScript 通過調用此 Flash 程序提供的socket介面與伺服器端的socket進行通信。JavaScript 在收到伺服器端以 XML 格式傳送的信息後可以很容易地控制 HTML 頁面的內容顯示
4、Server-sent
伺服器推指的是HTML5規范中提供的服務端事件EventSource,瀏覽器在實現了該規范的前提下創建一個EventSource連接後,便可收到服務端的發送的消息,實現一個單向通信。客戶端進行監聽,並對響應的信息處理顯示
5、WebSocket
WebSocket是HTML5下一種新的協議,是基於TCP的應用層協議,只需要一次連接,便可以實現全雙工通信,客戶端和服務端可以相互主動發送消息。客戶端進行監聽,並對響應的消息處理顯示
針對自己系統的應用場景選擇合適的推送方案才是合理的,因此最後簡單說一下實現個性化推送的兩種方式。第一種很簡單,直接使用第三方實現的推送,無需復雜的開發運維,直接可以使用。第二種就是自己封裝,可以選擇如今較為火熱的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消息推送。具有操作步驟如下:
1、到極光官網注冊賬號:https://www.jpush.cn/
2、創建應用,按照要求填寫你的應用名稱,包名提交
3、下載案例,一般情況測試是能收到信息的
4、集成到自己的項目中,按照官網的集成http://docs.jpush.cn/pages/viewpage.action?pageId=557214
5、集成時將注意的要點,官網上也有說,但是我再強調一下要注意兩個許可權的包名填寫,有可能直接用案例上的拷貝到自己的manifest中時沒有替換掉包名,切記,要替換成自己的項目的包名。
極光推送已經覆蓋了近10億Android、IOS終端,30多萬款APP應用,服務總用戶數超過30億,每天消息推送量達5億多條,已成為移動應用數據平台。極光分享幫助應用具備國內主流社交平台分享功能,提供新浪微博、QQ、微信等第三方社會化分享服務,提高產品推廣效率,幫助產品提高用戶體驗,獲得更多用戶。

⑼ Android消息推送整個鏈路大概分幾步

所謂的消息推送就是從伺服器端向移動終端發送連接,傳輸一定的信息。比如一些新聞客戶端,每隔一段時間收到一條或者多條通知,這就是從伺服器端傳來的推送消息;還比如常用的一些IM軟體如微信、GTalk等,都具有伺服器推送功能。
推送方法如下:
1)通過SMS進行伺服器端和客戶端的交流通信。在Android平台上,你可以通過攔截SMS消息並且解析消息內容來了解伺服器的意圖,可以實現完全的實時操作。但是問題是這個方案的成本相對比較高,且依賴於運營商。

2)循環主動定時獲取:這種方法需要客戶端來做一個定時或者周期性的訪問伺服器端介面,以獲得最新的消息。輪詢的頻率太慢可能導致某些消息的延遲,太快則會大量消耗網路帶寬和電池。
3)持久連接:這個方案可以解決由輪詢帶來的性能問題,但是還是會消耗手機的電池。我們需要開一個服務來保持和伺服器端的持久連接(蘋果就和谷歌的GCM是這種機制)。
消息推送推送可以到極光了解一下。極光推送提供了基於HTTP協議的推送API? API包含全部的推送功能?開發者完全可以基於此API開發獨立的推送頁面或者將推送功能集成到現有的管理系統內。

閱讀全文

與android推送原理圖相關的資料

熱點內容
app怎麼交付 瀏覽:341
圖蟲app怎麼才能轉到金幣 瀏覽:173
如何做徵文app 瀏覽:444
用什麼app管理斐訊 瀏覽:167
安卓如何下載寶可夢劍盾 瀏覽:164
編譯器開發屬於哪個方向 瀏覽:938
megawin單片機 瀏覽:685
以色列加密貨幣監督 瀏覽:907
程序員前端現在怎麼樣 瀏覽:497
伺服器和介面地址ping不通 瀏覽:555
linux命令返回上級目錄 瀏覽:897
移動花卡寶藏版為什麼不能選免流app 瀏覽:255
速騰carplay怎麼用安卓 瀏覽:13
紅塔銀行app怎麼樣 瀏覽:564
農行app怎麼開網銀 瀏覽:651
java迭代器遍歷 瀏覽:303
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:205
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:872