在我们使用GCM的某个应用程序上,我们一直在收到有关应用程序被杀后应用程序停止接收通知的报告。再次启动应用程序时,通知显示正常。
经过调查,我们发现这是由于Android 3.1上的这一变化:
请注意,系统会将FLAG_EXCLUDE_STOPPED_PACKAGES添加到所有广播意图中。这样做是为了防止来自后台服务的广播无意或不必要地启动已停止应用程序的组件。后台服务或应用程序可以通过将FLAG_INCLUDE_STOPPED_PACKAGES标志添加到应允许激活已停止的应用程序的广播意图来覆盖此行为。 (Android 3.1 changes)
我检查了收到通知后GCM触发的意图,我注意到确实设置了FLAG_EXCLUDE_STOPPED_PACKAGES。
这意味着在Android 3.1+上运行我们的应用的所有用户一旦杀死他们的应用就会停止接收通知,直到他们自己重启。 (Pre-Android 3.1工作正常)。
由于GCM框架本身触发了intent,我们无法更改在其上设置的标志,因此我们正在寻找另一种解决方法。
感谢所有想法。
答案 0 :(得分:-3)
您应该从menifist文件注册gcm广播接收器,这样即使应用关闭,接收器也会收到通知。