我正在将Firebase的“数据”消息发送到我的应用程序,但是当应用程序处于打ze模式时,即使将我的应用程序列入电池优化白名单并且将我的消息标记为优先级,FirebaseMessagingService也不会处理这些消息。 / p>
Firebase docs为何我选择“数据”消息而不是通知。
Android mechanism将应用添加到白名单并跳过电池优化。
Firebase priority messages根据文档。
我遵循所有这些步骤,即使在此之后,消息也不会传递给我的FirebaseMessagingService实现。
有任何想法,即使在打ze模式下,如何强制FirebaseMessagingService处理邮件?
注意:我正在开发一个VoIp应用程序,如果消息没有立即发送,消息不再有效且目的不明。
答案 0 :(得分:0)
如果您遵循所有文档,则仍然可能是FCM取消了邮件优先级的处理,如documentation中所述:
高优先级消息通常应导致用户交互 与您的应用或其通知。如果FCM检测到一种模式 他们没有,您的邮件可能会被取消优先级。推出Android P 应用程序备用存储桶限制了FCM高优先级的数量 您可以发送到您的应用的消息,这些消息不会导致用户使用 您的应用或查看通知。如果,作为高度优先事项 消息中,以一种可见的方式显示通知 用户,那么您的应用备用存储分区配额将不会被该用户占用 消息。
没有“强制”模式可以让您按照文档中规定的规则进行操作。如果任何人都可以简单地绕过规则,那么每个人都会这样做,并且这些规则对最终用户来说将变得毫无用处,最终用户只是试图从不遵循最佳实践的应用程序中节省电量。
答案 1 :(得分:0)
过一会儿我们发现了问题。
在服务器端,不是实现最新的API,而是实现了旧的API。
它们具有不同的有效负载,可以在此处查看:Firebase Payload
基本上代替:
"android":{
"ttl": "0s",
"priority": "high"
}
我们必须使用:
"priority": 10,
"time_to_live": 0