2015-07-12 66 views
1

我使用的WebSockets,讓我的Android應用程序中實時聊天。當應用程序未處於活動狀態並且用戶收到消息時,GCM將在後臺打開websockets服務並重新啓用實時聊天功能。爲Android使用的WebSockets聊天

我已閱讀關於WebSocket和電池壽命的擔憂,但如果我僅在用戶有新消息作出響應時才使用GCM打開WebSockets,這是否可以實現實時聊天?

回答

2

不,我不這麼認爲.GCM不是100%可靠。 他們的文件說:

GCM通常提供的消息在發送後即可。但是,這可能不總是可能的。例如,如果平臺是Android,則該設備可能被關閉,脫機或不可用。或者,發件人本身可能會要求在設備通過使用delay_while_idle標誌變爲活動狀態之前不會傳遞消息。最後,GCM可能會故意拖延消息,以防止應用程序消耗過多資源並對電池壽命產生負面影響。

當發生這種情況,GCM會存儲消息並且只要它是可行的實現它。雖然這在大多數情況下都是正常的,但有些應用程序可能遲遲不會傳遞延遲消息。例如,如果消息是來電或視頻聊天通知,則只有在呼叫終止之前的一段時間內纔有意義。或者如果該消息是對事件的邀請,則在事件結束後收到該消息將是無用的。

所以,你可以使用GCM重新連接到的WebSockets如果客戶端不接,但一旦連接成功,則所有的通信應該是插座本身。

+0

這就是我究竟是如何設置它。 GCM僅在設備未通過WebSockets連接時使用,否則所有通信均通過WebSockets進行 – Sauron