Google如何實現其推送通知功能?它是通過在後臺運行的服務進行輪詢還是以不同的方式運行?推送通知技術如何在Android上運行?
回答
從以色列的Android開發會議期間我聽到什麼:
有一個簡單的TCP套接字雲谷歌服務器上accept mode等待。 TCP連接已由Google Play應用程序啓動。這就是爲什麼必須在設備上安裝Google Play才能使Google Cloud Messaging (GCM)(以前的Android Cloud到設備消息傳遞服務 - C2DM)能夠正常工作的原因。
當這個TCP客戶端套接字收到一些消息時,該消息包含諸如它應該發往的應用程序的包名稱等信息 - 數據本身。這些數據將被解析並打包到廣播並最終由應用程序接收的intent中。
即使設備的無線電狀態變爲「空閒」模式,TCP套接字也保持打開狀態。應用程序不必跑來接收意圖。在http://developer.android.com/google/gcm/gcm.html
但我認爲它也適用於仿真器。 我想到的事情是設備使用當前路徑(IP)更新服務器。當谷歌服務器需要發送通知時,它會將當前路徑和轉發消息發送到該路徑。我在某種程度上是否正確? – 2012-07-16 17:02:22
@Khawar Raza:當設備的IP由於某種原因而改變時,設備將從服務器斷開連接。當它發生時 - 新的連接取而代之,取決於設備的新IP。 – 2012-07-16 17:06:37
@Khawar Raza:即使沒有谷歌遊戲,模擬器也能正常工作。我想它啓動內置的內置套接字,而不是谷歌播放 – 2012-07-16 17:11:29
是的,你是對的。谷歌有一項服務(GTalk服務),這項服務在一段時間內詢問Google服務器。
gtalkservice服務是否仍然存在並正在運行? – 2012-07-16 17:03:07
我不知道。我剛剛閱讀了C2DM如何工作。現在可以改變。 – Yury 2012-07-16 18:39:33
更多信息,您可以實現與長輪詢tcp連接自己的android推送通知。 但是,這將涉及維持一個額外的插座=>電池耗盡。 或者您可以使用Alarm Manager定期打開連接。
Google可能會爲所有C2DM推送通知打開一個套接字,因此其電池使用效率更高。
Android保持與Google服務器的一個活動連接,但不會消耗太多的電量或數據,因爲只有在某些內容向您的手機上的應用發送GCM消息之前,纔會發送流量。手機上只有一個連接,由所有應用程序使用:安裝使用GCM的新應用程序不會增加任何額外負載。
GCM的第一步是第三方服務器(例如電子郵件服務器)向Google的GCM服務器發送請求。然後,該服務器通過該打開的連接將消息發送到您的設備。 Android系統會查看該消息以確定該應用的用途,然後啓動該應用。該應用程序必須向Android註冊才能使用GCM,並且必須具有相關權限。當應用程序啓動時,它可能會立即使用消息中的數據創建通知。 GCM消息的大小非常有限,因此該應用可能會打開與第三方服務器的正常連接以獲取更多信息(例如,下載新電子郵件的標頭)。
使用推送通知的優勢在於,應用程序不必定期運行以檢查新數據,同時節省電力和數據。擁有像GCM這樣的集中式機制的好處是設備只需要一個開放的網絡連接,而Android GCM系統是唯一需要繼續運行的事情,而不是每個應用都必須在後臺保持運行以保持自己的網絡連接到它自己的服務器。
只是關於GCM連接的評論。該單一連接是輪詢連接。 – wmac 2015-08-13 02:09:10
對我來說,至關重要的是第三方服務器,例如電子郵件服務器確實會向Google GCM服務器發送通知消息。這是Google免費提供的服務,任何此類第三方必須使用其GCN協議與Google服務器實施溝通渠道。順便說一句,該協議幾乎只是一個JSON格式的HTTP響應。有關詳細信息,請參閱https://developers.google.com/cloud-messaging/。 – 2016-08-01 14:41:15
- 1. 在Android上實現推送技術
- 2. 推送通知不是Android的運行
- 3. BB10 android運行時間推送通知
- 4. 如何在C#.Net上通過GCM發送Android推送通知
- 5. 蘋果推送通知網關的測試技術
- 6. 哪種最可靠的網絡推送通知技術?
- 7. 如何使用GCM在Android上進行推送通知?
- 8. Android - 推送通知
- 9. 推送通知 - Android
- 10. 推送通知android
- 11. Android推送通知
- 12. 在android上推送通知:IBM MQTT
- 13. 在Android上解析推送通知
- 14. 在Android上未收到推送通知
- 15. 在Android上啓動推送通知GCM
- 16. Android - 如何在Android中進行推送通知
- 17. 通知服務技術
- 18. 輕量級通知技術
- 19. Android如何禁用推送通知?
- 20. 如何測試Android/iOS推送通知?
- 21. iPhone推送通知服務器在C#中運行在Windows上
- 22. 推送通知後運行功能
- 23. GCM推送通知無法在HTC Explorer v 2.3.5中運行android
- 24. .NET「推」技術?
- 25. 如何運行非技術性啓動的技術部門?
- 26. 在android中發送推送通知
- 27. Android上的存摺推送通知?
- 28. Android上的推送通知 - 不是GCM
- 29. 如何在Android上使用GCM處理多個推送通知
- 30. 如何在android上測試推送通知?
聽起來像是一個真正的問題給我。我想知道它的答案,Google把我帶到了這裏。又一個質量問題關閉了。 – 2013-12-10 13:05:27
我也想知道這一點,並計劃寫一個問題,但有這個問題,所以這絕對是一個很好的問題。 – PSIXO 2014-05-06 10:07:36