1

Google雲消息傳遞(推送消息)問題。
我有兩款智能手機(HTC Sensation XE,Desire HD)和一款平板電腦(Samsung Galaxy Note 10.1 Wifi)。
有時我需要等待將近15分鐘才能收到GCM推送消息。有時我會立即收到GCM推送消息(30秒內)。
這是正常的嗎?或者僅僅因爲我在Wifi下連接?
如果是正常的,有沒有其他服務比如我可以用來從服務器檢索消息的「long-polling」?
我正在使用GCM +輪詢(AlarmManager)從遠程服務器檢索消息。
任何建議或更好的點子?
接收Android GCM消息這麼慢?

下面是我的測試結果:
左側是服務器發送時間,而右側則是客戶端移動接收時間。
所有測試結果都在Wifi連接環境下。
==========================
HD 23時10分18秒,23:24:XX

XE 23 :11:21,23時22分44秒

注意 二十三點10分20秒,23時14分54秒

=================== =======
HD ○點08分12秒,0點08分27秒

XE 0時07分55秒,00:07: 58

注意 0時08分04秒,0時13分35秒

==========================
HD 〇點40分21秒,0點55分22秒

XE 0點39分56秒,0時四十零分14秒

注意 0時四十分13秒,0點40分59秒

謝謝!

+0

您是否嘗試將'time_to_live'參數設置爲0?正如文檔中所述,它將盡最大努力發送:https://developer.android.com/google/gcm/adv.html#ttl – Sauron 2014-12-11 00:48:54

回答

0

您可以手動觸發心跳以保持連接離子活下來的代碼。如果某個網絡路由器閒置了特定的時間段(有時5分鐘),它們將自動終止空閒套接字連接。每5分鐘執行一次該代碼,以便在關閉時重新建立連接。但是,顯然縮短間隔會消耗更多的電池(我不知道這裏有多少關聯,因爲現在智能手機拿出高容量的電池)。

getApplicationContext().sendBroadcast(new Intent("com.google.android.intent.action.GTALK_HEARTBEAT")); 
getApplicationContext().sendBroadcast(new Intent("com.google.android.intent.action.MCS_HEARTBEAT"));