我有一個依賴GCM推送通知的Android應用程序,有時用戶的設備將停止接收推送通知。這種行爲非常具有間歇性:在某些設備上,它永遠不會失敗,只需保持數週或數月的工作狀態,而在其他設備上,它會工作幾天,然後隨機停止接收推送。設備停止接收GCM推送,直到網絡切換
每當設備停止工作時,我已驗證設備從GCM有一個有效的regId,並且我的服務器正在發送推送到該REGID。但是,日誌顯示設備沒有收到任何東西。這裏是一個正常的推日誌中收到什麼樣子:
05-15 10:39:21.091: V/GCMBroadcastReceiver(13766): onReceive: com.google.android.c2dm.intent.RECEIVE
05-15 10:39:21.091: V/GCMBroadcastReceiver(13766): GCM IntentService class: com.medigram.v2.GCMIntentService
05-15 10:39:21.091: V/GCMBaseIntentService(13766): Acquiring wakelock
05-15 10:39:21.111: V/GCMBaseIntentService(13766): Intent service name: GCMIntentService-468134393228-13
05-15 10:39:21.131: V/GCMBaseIntentService(13766): Releasing wakelock
05-15 10:39:21.171: V/GCMBroadcastReceiver(13766): onReceive: com.google.android.c2dm.intent.RECEIVE
05-15 10:39:21.171: V/GCMBroadcastReceiver(13766): GCM IntentService class: com.medigram.v2.GCMIntentService
05-15 10:39:21.171: V/GCMBaseIntentService(13766): Acquiring wakelock
05-15 10:39:21.241: V/GCMBaseIntentService(13766): Intent service name: GCMIntentService-468134393228-14
05-15 10:39:21.271: V/GCMBaseIntentService(13766): Releasing wakelock
的這一切都顯示了已停止接收推送的設備上,並且作爲一個結果,也不是我的GCMIntentService的onMessage()方法調用。
奇怪的是,當我將設備連接從3G/4G切換到wifi或反之亦然時,它再次開始工作,設備立即獲得所有積壓推送。當連接類型改變時究竟發生了什麼?
萬一有幫助,這裏有一些事情我在哪裏推動工作手動重現問題的設備試過,但無濟於事:
-I開始以爲這可能是一個方面的問題,但當簡單的交換網絡解決了這個問題時,這一點很快就被排除了。無論如何,我試着進一步調查,通過使用'不保留活動'開發人員選項,然後背景的應用程序,但這對推動沒有影響。
-I've試圖強行停止的應用程序,看它是否會導致推停止工作,但似乎問題並不有什麼做的應用程序被強制停止,因爲它保持工作。
-I've試圖把手機飛行模式和回來了,但推堅持工作。
我將不勝感激,如果有人能在正確的方向指向我,因爲我幾乎用盡了所有的資源,在計算器和谷歌。對於這個問題,我仍然一無所知。
可能重複讀的[這](http://stackoverflow.com/questions/13835676/google-cloud-messaging-messages-sometimes-not-received-until-network-state-cha) – Eran
你能提供一些洞察到你的項目的S- etup?這是一個圖書館項目嗎?您的應用程序是否從庫項目調用GCM處理?在哪些情況下,您的應用在GCM上註冊,並且它是否註銷? –
您是否找到了解決方案?即使我面臨同樣的問題。 – keen