首页 > 解决方案 > 当应用程序处于打盹模式时,FirebaseMessagingService 未处理 Firebase 数据消息

问题描述

我正在使用 Firebase 向我的应用程序发送“数据”消息,但是当应用程序处于打盹模式时,FirebaseMessagingService 不会处理这些消息,即使我的应用程序被列入电池优化白名单并且我的消息标记为优先级也是如此。

关于我为什么选择“数据”消息而不是通知的Firebase 文档。

将应用添加到白名单并跳过电池优化的Android 机制。

根据文档的Firebase 优先级消息。

我遵循所有这些步骤,即使在此之后,消息也不会传递给我的 FirebaseMessagingService 实现。

知道如何强制 FirebaseMessagingService 处理消息,即使在打盹模式下?

注意:我正在开发一个 VoIP 应用程序,如果消息没有立即传递,它不再有效并且它的目的丢失了。

标签: androidfirebasefirebase-cloud-messaging

解决方案


如果您遵循所有文档,则 FCM 可能仍会降低您的消息的优先级,如文档中所述:

高优先级消息通常会导致用户与您的应用或其通知进行交互。如果 FCM 检测到他们没有检测到的模式,您的消息可能会被取消优先级。Android P 引入了应用备用存储桶,它限制了您可以发送到应用的 FCM 高优先级消息的数量,这些消息不会导致用户使用您的应用或查看通知。如果在响应高优先级消息时以用户可见的方式显示通知,则该消息不会消耗您的应用备用存储桶配额。

没有“强制”模式可以让您在文档中规定的规则之上进行操作。如果任何人都可以简单地绕过规则,那么每个人都会这样做,而这些规则对最终用户来说将变得毫无用处,他们只是试图从不遵循最佳实践的应用程序中节省电池电量。


推荐阅读