在我们使用 GCM 的应用程序之一上,我们一直收到报告称,当应用程序被杀死时,应用程序停止接收通知。再次启动应用程序时,通知会正常显示。
经过调查,我们发现这是由于Android 3.1上的这个变化:
请注意,系统将 FLAG_EXCLUDE_STOPPED_PACKAGES 添加到所有广播意图。这样做是为了防止来自后台服务的广播无意或不必要地启动已停止应用程序的组件。后台服务或应用程序可以通过将 FLAG_INCLUDE_STOPPED_PACKAGES 标志添加到应该允许激活停止的应用程序的广播意图来覆盖此行为。(Android 3.1 变化)
当收到通知时,我检查了 GCM 触发的意图,我注意到确实设置了 FLAG_EXCLUDE_STOPPED_PACKAGES。
这意味着所有在 Android 3.1+ 上运行我们的应用程序的用户在他们终止他们的应用程序后将停止接收通知,直到他们自己重新启动它。(Android 3.1 之前的版本运行良好)。
由于意图是由 GCM 框架本身触发的,因此我们无法更改在其上设置的标志,因此我们正在寻找另一种解决方法。
所有的想法都受到赞赏。