由於我想在移動應用中建立可靠的通信,我可以從第三方推送服務(C2DM,APN,城市飛艇)推送失敗的報告(可能設備處於脫機狀態)嗎? 或者我們需要自己構建它?如何實現可靠的推送消息服務?
回答
Android C2DM的預期用途是爲您的服務器應用程序發送信號,告知移動設備它希望開始可靠的通信。
您可以構造消息,以便每個新的C2DM都包含自從與服務器進行最後雙向交互(即「來,拿到我所得到的東西」)以來發生的所有事情。您的失敗投遞報告隱含在移動設備沒有及時響應(您可以這樣做,因爲您知道C2DM使用Intent激活您的應用程序)。
這是真的比保證每個消息在有損介質中傳遞更糟嗎?好吧,更糟糕的是你還必須實施主要的溝通方式。但無論如何,你必須這樣做,因爲C2DM僅限入站,對嗎?
我建議推送通知IBM MQTT協議。這足以支持推送通知。 請參閱演示https://github.com/tokudu/AndroidPushNotificationsDemo
感謝您的回覆!大拇指首先爲您的答案。 –
正如Vinay所說,MQTT可能會爲您提供所需的功能。當客戶端連接到服務器時,它可以向服務器註冊「最後的遺囑」消息。如果客戶端意外斷開連接,服務器會將此消息發送給它被指示執行的主題。
在這個方案中,你的客戶端可以發送消息「在線」給客戶端//狀態之類的東西,並將消息「脫機」註冊爲同一主題的LWT。然後,您可以擁有一個服務器本地客戶端,該客戶端可以監聽主題客戶端/ + /狀態,並知道哪些客戶端在線以及哪些客戶端處於離線狀態。
我建議tokudu演示不是最好看的地方。本博客文章由戴爾巷深入分析了在Android上使用MQTT:http://dalelane.co.uk/blog/?p=1599並沒有在http://stephendnicholas.com/archives/219
有客戶端實現,以滿足這兩個IOS和Android MQTT電量(再次在Android)的審查,看http://mqtt.org/software
感謝您的回覆!大拇指首先爲您的答案。 –
這裏是另一個用電比較,這次https:http://stephenndnicholas.com/archives/1217 – ralight
沒有一個服務沒有提供關於失敗推送的報告。
未能推報告提出用APN/C2DM /氦
所有服務都旨在在所有情況下提供推送消息的小SENCE。 如果設備現在處於脫機狀態,則當設備變爲聯機狀態時將會發送推送。
此外,對於iOS推送消息只是一個用戶通知,而不是一個應用程序!
簡單案例將說明它: 假設應用程序關閉時收到推送。在這種情況下,會發生用戶通知。但是,只有當用戶點擊該通知時,應用纔會從推送中接收數據!如果用戶點擊應用程序的圖標,則不會收到數據。
技術上來說,推送被傳送到iOS設備並且應用程序已啓動,但數據未被傳送。
UrbanAirhip與APN和氦
你可以考慮實現自己的推運輸。 MQTT似乎是一個不錯的選擇。 但在這種情況下,您必須處理keepalive,設備睡眠和電池優化。 Apple,Google和UrbanAirship的工程師已經完成了所有這些艱苦的工作。
根據您的業務需求,您可以更輕鬆地調整現有解決方案的架構,然後重新實現推送服務。
仔細觀察一下UrbanAhiphip。事實上,C2DM有一些侷限性,有時推送消息的傳遞時間太長。由於UA已經實施了自己的交通工具 - 氦氣,它運行得非常好。氦氣是一種付費服務,但UA提供良好的SLA。
我做了類似的事情,我有一個數據庫跟蹤已知訂戶的推送隊列,並在失敗時進行報告。這是非常簡單的,去這樣的事情...
The schema was like so:
pushMessages
messageID , GUID, PK
message , nvarchar (256),
expires , datetime
messageQueues
subscriberID , GUID, PK
messageID , GUID PK
failedPushMessages
subscriberID, GUID, PK
messageID , GUID PK
(subscriber table omitted)
一旦客戶收到的消息成功,客戶端將回ping到推送服務器,並通過它在推收到的唯一queueItems ID通知它通知。還會有一個每日數據庫過程來檢查過期的推送消息。找到它時,它會在匹配messageID的queueMessages上進行連接,然後將它們從messagesQueues表中刪除並將它們複製到failedPushMessages表中。
這很容易理解和維護,但我沒有經驗做另一種方式。
推送服務是一種高效可靠的方式來提醒您的用戶。它們甚至允許後臺應用程序實時通知用戶新信息。推送服務廣泛用於移動應用中的各種領域,例如天氣更新,消息服務,郵件通知,優惠券服務等。推送服務不再是可選的,但已變得至關重要。
- 1. UDP可靠的數據服務實現
- 2. 權衡實現可靠的異步消息訪問服務的版本控制?
- 3. BlackBerry Android推送消息服務器
- 4. 推送消息給C2DM服務器
- 5. php推送服務器不能發送乘法推送消息
- 6. 推送服務器實現技術?
- 7. 推送通知服務器實現
- 8. 使用GWTP實現服務器推送
- 9. 實現推送通知服務器:如何檢查傳遞設備令牌的消息來自真實設備?
- 10. 如何實現消息發送系統?
- 11. NodeJS/SocketIO消息未被可靠傳送
- 12. 如何實現BlackBerry應用程序的推送服務?
- 13. Apple的推送通知服務可靠嗎?
- 14. 通過node.js中的TCP實現可靠的消息傳遞
- 15. 如何發送消息給服務?
- 16. 在PHP-JavaScript中實現消息服務
- 17. 在ASP.NET MVC中實現消息服務
- 18. 我如何發送WAP推送消息?
- 19. 消費服務無限期推送SOAP消息?
- 20. JWT用於從服務器發送iOS推送消息
- 21. 如何在Flask框架中實現服務器推送?
- 22. 如何在Java Web服務上實現Google推送通知?
- 23. 如何在OkHttp中實現接收服務器推送?
- 24. 如何實現蘋果推送通知服務在iphone
- 25. 如何一次實現服務器推送更多值?
- 26. ios推送通知服務器可靠性
- 27. WhatsApp如何實現通過推送通知在iOS中推送的消息的送達回執?
- 28. 如何在Web服務中實現消息級別的安全
- 29. 連接服務器 - 實現服務器推送
- 30. 推送消息Phonegap
謝謝!我認爲它適用於任何不可靠的基於推送的服務。我會評估每個答案,並獎勵給我最好的一個。 –