2017-01-01 66 views
3

我有一些使用gcm notification的應用程序。他們工作正常,但這裏有一個問題:如果我幾乎沒有打開其中一個很長時間(如2個月或更長時間),它不會再收到通知。如果應用程序未長時間打開,則不會收到GCM推送通知

實際上,我也遇到過這種與stackoverflow應用程序的行爲。 任何人都可以解釋是什麼原因以及如何避免它?

回答

1

通常情況下,gcm notication的使用期限爲4周後,它會停止播放它。但就你而言,應用程序通常有喚醒計時器,可以讓它們定期喚醒並嘗試接收通知,即使沒有打開。如果您在某些應用上丟失了通知,請檢查您是否有節電應用,例如Greenify或其他可有效阻止您的應用喚醒的應用。如果沒有,那麼你的ROM可能具有節電功能,可以阻止喚醒功能e.t.c某些情況也可能觸發應用程序中的喚醒,如WiFi連接或數據開啓。

+0

感謝您的回答,我已經在一些不同的手機上進行了測試,但沒有一個人啓用了節電功能。此外,關於通知的4周生命週期,我的意思是這些應用在一段時間不活動後將不會收到任何通知,例如,如果我現在發送通知,它將不會收到它,現在也不會收到它未來儘管它是連接到互聯網和其他應用程序在接收通知沒有問題。如果我打開這個示例應用程序一次,它會收到通知。關於「喚醒計時器」,你可以用一些代碼來解釋它嗎? – Merka

1

建議here將後臺連續運行的服務。請注意,IntentService在停止工作時會自行停止。

此外,根據本thread

如果用戶從設置強制停止您的應用程序,你的代碼將ň永遠永遠再跑,直到有手動運行您的組成部分之一,通常是用戶手動啓動一項活動(截至Android 3.1)。因此,如果用戶從設置強制停止您的應用程序,您將不會收到較新設備/仿真器上的GCM消息。

而@Bmbariah表示,Android設備上的Android應用程序無需運行即可接收消息。當消息到達時,系統會通過Intent廣播喚醒Android應用程序,只要應用程序設置了正確的廣播接收器和權限。您可以檢查這個WakefulBroadcastReceiver服務,讓您管理後臺任務的生命週期。

文檔只會說「喚醒」,這對我來說意味着應用程序正在「睡眠」或在後臺。但是當你強制關閉一個應用程序時,它沒有運行過程來「醒來」,它需要啓動。

希望這會有所幫助!

相關問題