如何接收应用程序停止或设备关闭时发送的 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 推送通知?的主要内容,如果未能解决你的问题,请参考以下文章