仅接收来自 GCM 的最后一个后台静默推送通知
Posted
技术标签:
【中文标题】仅接收来自 GCM 的最后一个后台静默推送通知【英文标题】:Receiving only the last background silent push notification from GCM 【发布时间】:2016-08-10 12:56:06 【问题描述】:我正在开发一个接收推送通知的 Ionic 2 应用程序。它必须接收静默背景通知,这意味着通知在系统通知区域中不可见。相反,当应用程序打开时,通知会发送到应用程序,然后它会处理接收到的数据。它可以正常工作,只是它只接收应用关闭时发送的最后一条通知。
可能是缺少 GCM 消息配置。
预期行为
接收多个后台静默推送通知。
实际行为
只接收最后一个后台推送静默通知。
重现场景(包括但不限于)
重现步骤平台和版本在应用关闭时发送两条或更多条无声后台消息。 打开应用程序。 on receive 只收到最后一个通知 听众。
(Android) 什么设备供应商android 5.1.1/6.0
Cordova CLI 版本和cordova 平台版本谷歌
插件版本cordova --version 6.2.0 科尔多瓦
平台版本android 5.1.1
样本推送数据负载cordova 插件版本 | grep phonegap-plugin-push 1.7.4
"delay_while_idle": true,
"priority": "high",
"data":
"content-available": "1",
"notId": Date.now(),
"silenttitle": 'some title',
"silentmessage": 'some message'
我如何才能收到发送到我的应用程序的所有静默通知?
【问题讨论】:
您如何检查是否收到消息?您是否期望有日志消息?另外,如果您发送 3 条消息而只收到最后一条,会发生什么情况? 是的。我实现了一个通知监听器。当我打开应用程序时,它只接收并记录应用程序关闭时发送的最后一条静默消息。如果应用程序打开,我会收到所有无声消息。它还将消息保存在数据库中并向用户显示。 我不确定从 ionic 到 GCM 的最终有效负载是什么样的,但是如果优先级很高,则应始终将数据消息传递到设备。我认为您需要一位离子专家来解决这个问题。 【参考方案1】:基于此SO question,在某些情况下,静默通知可能不会发送到设备。例如,如果开启了飞行模式,在将其关闭后,您将不会收到所有丢失的通知,而只会收到最后一个。在大多数情况下,将发送带有正文和内容可用的推送通知。
我还在这个blog 中看到收到了一些通知,但不是全部。如果您同时发送多个推送通知,通常只会收到几个。这是预期的行为。 APNS 为每个带有推送应用程序的设备维护一个 QoS(服务质量)队列。这个队列的大小是 1,所以如果你发送多个通知,最后一个通知会被覆盖。
希望这会有所帮助!
【讨论】:
【参考方案2】:https://github.com/firebase/quickstart-android/tree/master/messaging 试试这个。我使用它,我能够接收推送通知。
【讨论】:
我可以使用 GCM 接收推送通知。当应用程序处于后台时,我无法接收发送的多个静默通知。不幸的是,考虑到我使用推送 Amazon SNS 的事实,Firebase 现在不是替代方案。以上是关于仅接收来自 GCM 的最后一个后台静默推送通知的主要内容,如果未能解决你的问题,请参考以下文章