Android 如果应用程序长时间未打开,则不会收到GCM推送通知

Android 如果应用程序长时间未打开,则不会收到GCM推送通知,android,push-notification,google-cloud-messaging,Android,Push Notification,Google Cloud Messaging,我有一些应用程序正在使用gcm通知。它们工作正常,但这里有一个问题:如果我几乎很长时间(比如2个月或更长时间)不打开其中一个,它将不再收到通知 事实上,我也在stackoverflow应用程序中体验到了这种行为。 有人能解释一下原因是什么以及如何避免吗 通常,gcm通知在谷歌停止广播后的4周内有效。但在您的情况下,应用程序通常有唤醒计时器,允许它们定期唤醒,并尝试接收通知,即使不打开。如果您在某些应用程序上丢失通知,请检查您是否有节省电池的应用程序,例如Greenify或其他有效阻止应用程序通知

我有一些应用程序正在使用
gcm通知
。它们工作正常,但这里有一个问题:如果我几乎很长时间(比如2个月或更长时间)不打开其中一个,它将不再收到通知

事实上,我也在stackoverflow应用程序中体验到了这种行为。
有人能解释一下原因是什么以及如何避免吗

通常,gcm通知在谷歌停止广播后的4周内有效。但在您的情况下,应用程序通常有唤醒计时器,允许它们定期唤醒,并尝试接收通知,即使不打开。如果您在某些应用程序上丢失通知,请检查您是否有节省电池的应用程序,例如Greenify或其他有效阻止应用程序通知唤醒的应用程序。如果没有,则可能是您的ROM具有电池节省功能,阻止了此唤醒。e.t.c某些情况也可能会触发应用程序中的唤醒,如WiFi连接或数据打开。

建议将连续运行的服务置于后台。需要注意的是,当它没有工作时会自动停止

此外,根据这一点:

如果用户强制停止您的应用程序的设置,您的代码将永远不会再次运行,直到某个组件手动运行,通常是用户手动启动活动(从Android 3.1开始)。因此,如果用户强制停止应用程序的设置,您将不会在较新的设备/模拟器上收到GCM消息

正如@Bmbariah所说,安卓设备上的安卓应用程序不需要运行来接收消息。当消息到达时,系统将通过意向广播唤醒Android应用程序,只要应用程序设置了正确的广播接收器和权限。您可以检查此服务,它允许您管理后台任务的生命周期

文档只说“唤醒”,这对我来说意味着一个应用程序正在“睡觉”或在后台。但当你强制关闭一个应用程序时,它没有“唤醒”的运行过程,需要启动它


希望这有帮助

谢谢你的回答,我已经在一些不同的手机上进行了测试,但没有一款手机启用了节电功能。另外,关于通知的4周生命周期,我的意思是,这些应用程序在一段时间不活动后将不会收到任何通知,例如,如果我现在发送通知,它现在不会收到,将来也不会收到,尽管它已连接到互联网,其他应用程序在接收通知方面没有问题。如果我打开此示例应用一次,它将从此收到通知。关于“唤醒计时器”,你能用一些代码解释一下吗?