如何接收应用程序停止或设备关闭时发送的 GCM 推送通知?

Posted

技术标签:

【中文标题】如何接收应用程序停止或设备关闭时发送的 GCM 推送通知?【英文标题】:How to receive GCM push notifications sent when app was stopped or device shutdown? 【发布时间】:2016-07-25 18:55:53 【问题描述】:

我正在使用 Ionic 2 开发应用程序。此应用程序必须接收推送通知。

在某些情况下,应用会像 android 中的“强制停止”选项一样被终止。在其他情况下,设备将关闭。在这种情况下,即使启用了后台模式插件,我的应用也不会收到推送通知。

无论如何,我知道推送通知存储在某个地方,在等待传递的队列中。当我再次启动我的应用程序时,应用程序不会自动接收在我的应用程序未运行时发送的通知。如果此时我收到新通知,则我的应用程序停止时发送的所有通知都将被我的应用程序接收。

我的问题是如何强制我的应用接收应用停止时发送的通知或要求 GCM 发送此通知?

【问题讨论】:

虽然这个SO question在android中,但我认为它可以让你了解GCM在应用停止时是如何工作的。 感谢您的回复。本主题没有解决完全相同的问题。他们讨论了如何在应用程序被强制关闭时不调用 on receiver 侦听器。我的疑问是如何接收发送的消息WHILE应用程序被强制关闭AFTER重新打开。我知道这是可能的,因为我做了一个测试。但是要接收在应用程序被强制关闭时发送的通知,GCM 需要发送一个新的通知。即使在设备关闭时发送的消息也会出现这种行为。 【参考方案1】:

使用 GCM 时,如果您的应用停止(不仅仅是在后台),您的应用将无法接收 GCM 消息。这些消息将会丢失。

如果您的设备未连接,例如:关闭,则消息可以由 GCM 保存(请参阅time_to_live 字段),然后当设备重新联机时,如果应用程序之前没有停止过,消息将被发送然后它会收到消息。

【讨论】:

感谢您的回复,但这并不完全是答案。你离得很近。默认情况下,time_to_live 看起来是 4 周。这里需要的属性是 delay_while_idle 为 true。如果我错了,请纠正我。【参考方案2】:

解决了!

问题是后端的 GCM 配置后端不在我的应用前端。

根据this documentation“delay_while_idle”必须设置为true。

即使设备关闭或应用程序被终止,更改此属性也可以传递消息。一旦打开设备或打开应用程序,就会发送消息。

【讨论】:

以上是关于如何接收应用程序停止或设备关闭时发送的 GCM 推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

如果设备订阅过期,如何停止发送通知 - GCM PushSharp

当其他设备前景时,我应该停止发送推送通知吗?

GCM 推送通知仅适用于调试 apk

应用程序停止时如何接收来自 GCM 的通知

从 php 推送到 GCM/APN 的最佳实践

如何使用 GCM 和 java 向多个设备发送推送通知