【发布时间】:2019-02-06 16:47:49
【问题描述】:
我正在使用 Firebase 向我的应用发送“数据”消息,但是当应用处于打盹模式时,FirebaseMessagingService 不会处理这些消息,即使我的应用被列入白名单以进行电池优化并且我的消息被标记为优先级。
Firebase docs 为什么我选择“数据”消息而不是通知。
Android mechanism 将应用添加到白名单并跳过电池优化。
Firebase priority messages 根据文档。
我遵循所有这些步骤,即使在此之后,消息也不会传递给我的 FirebaseMessagingService 实现。
知道如何强制 FirebaseMessagingService 处理消息,即使在打盹模式下?
注意:我正在开发一个 VoIP 应用程序,如果消息没有立即传递,它就不再有效并且失去了它的目的。
【问题讨论】:
-
一段时间后我们发现了问题。在服务器端,不是实现最新的 API,而是实现了旧的 API。他们有一个不同的有效载荷,可以在这里看到:firebase.google.com/docs/cloud-messaging/… 基本上而不是:
"android":{ "ttl": "0s", "priority": "high" }我们必须使用:"priority": 10, "time_to_live": 0 -
如阅读文档,time_to_leave 表示接收 fcm 通知的最长时间,为什么将其设置为 0?
-
嗨,根据文档Firebase TTL 指定消息的生命周期的另一个优点是 FCM 从不限制生存时间值为 0 秒的消息。换句话说,FCM 保证“现在或永远”必须传递的消息尽最大努力。请记住,time_to_live 值为 0 意味着无法立即传递的消息将被丢弃。但是,由于此类消息从不存储,因此这为发送通知消息提供了最佳延迟。
标签: android firebase firebase-cloud-messaging