2012-07-27 116 views
10

我在我的應用程序中使用GCM,並且遇到問題。Android GCM消息需要很長時間才能到來

大部分時間我都會馬上收到消息,但有時消息會在5分鐘後一個接一個地出現,就像他們被困在路上一樣。這是正常的嗎?

+1

同上。遇到同樣的問題不幸的是:( – 2013-01-29 15:19:07

+1

我有同樣的問題 – 2014-04-23 13:09:06

回答

6

我還沒有注意到,在我的極其有限的測試,到目前爲止,但是從我的documentation的理解,這聽起來非常奇怪:

GCM通常會交付後,立即有消息發送。但是,這可能不總是可能的。例如,該設備可能被關閉,脫機或不可用。在其他情況下,發送方本身可能會要求消息在設備通過使用delay_while_idle標誌變爲活動狀態之前不能傳遞。最後,GCM可能會故意拖延消息,以防止應用程序消耗過多資源並對電池壽命產生負面影響。

在本文和其他文檔之間的語言中,您描述的內容聽起來像我期望的。不能保證即時交付;你通常會立即發送消息,但有時你不會。

+6

我正在構建一個應用程序,其中的及時傳遞信息至關重要迄今爲止我的經驗是GCM大部分時間需要2-3秒左右,但有時它可能需要5-10秒,偶爾需要1-2分鐘我不知道應用程序開發人員可以做什麼來減少交付時間或使其更加一致,但是如果有什麼我肯定會喜歡的知道! – gcl1 2013-04-10 14:03:01

+2

這是2014年6月。我仍然面臨這個問題。 – MeetM 2014-06-18 13:53:59

0

我在找到和原始海報相同的東西。似乎需要5分鐘才能「醒來」,然後很快處理消息。

我的應用程序正在處理與聾人的對話中的文本項目。主叫方發起對話,聾啞人通過電話迴應。延遲只發生在第一步,新消息「出乎意料」。一旦完成了第一個(應用程序,設備,系統ID),其他人就會很快地完成任務,幾乎是瞬間完成的。

8

客戶端手機上的GCM框架部分使用的端口5228.用於推送通知這個連接其上TCP連接,而且是每一個TCP連接,它可以繼續暫停時以適用嚴格的政策,一些路由器/運營商終止非活動的TCP連接(tcp空閒超時)。

大多數wifi路由器在5分鐘後殺死非活動連接,例如像我的一樣。

GCM框架使用keep-alive機制在wifi上每15分鐘發送一次心跳網絡數據包,在3G上每28分鐘發送一次心跳網絡數據包。對於所有用戶而言,這種保持活力並不總是可靠的。

我把問題打到谷歌這裏: https://productforums.google.com/forum/#!category-topic/nexus/connecting-to-networks-and-devices/fslYqYrULto 他們同意,目前有一個問題。

相關問題