android - 当应用程序处于打盹模式时,FirebaseMessagingService 未处理 Firebase 数据消息
问题描述
我正在使用 Firebase 向我的应用程序发送“数据”消息,但是当应用程序处于打盹模式时,FirebaseMessagingService 不会处理这些消息,即使我的应用程序被列入电池优化白名单并且我的消息标记为优先级也是如此。
关于我为什么选择“数据”消息而不是通知的Firebase 文档。
将应用添加到白名单并跳过电池优化的Android 机制。
根据文档的Firebase 优先级消息。
我遵循所有这些步骤,即使在此之后,消息也不会传递给我的 FirebaseMessagingService 实现。
知道如何强制 FirebaseMessagingService 处理消息,即使在打盹模式下?
注意:我正在开发一个 VoIP 应用程序,如果消息没有立即传递,它不再有效并且它的目的丢失了。
解决方案
如果您遵循所有文档,则 FCM 可能仍会降低您的消息的优先级,如文档中所述:
高优先级消息通常会导致用户与您的应用或其通知进行交互。如果 FCM 检测到他们没有检测到的模式,您的消息可能会被取消优先级。Android P 引入了应用备用存储桶,它限制了您可以发送到应用的 FCM 高优先级消息的数量,这些消息不会导致用户使用您的应用或查看通知。如果在响应高优先级消息时以用户可见的方式显示通知,则该消息不会消耗您的应用备用存储桶配额。
没有“强制”模式可以让您在文档中规定的规则之上进行操作。如果任何人都可以简单地绕过规则,那么每个人都会这样做,而这些规则对最终用户来说将变得毫无用处,他们只是试图从不遵循最佳实践的应用程序中节省电池电量。
推荐阅读
- python-3.x - 如何替换列表中的元素?
- python - 如何通过字符串值查询 NDB 数据库
- node.js - Node.js:如何将 RSA 公钥转换为 OpenSSH 格式?
- graphql - SyntaxError:在 Graphiql 中测试时,JSON 中位置 0 处出现意外标记 <
- vue.js - Vue - 如何将附加参数传递给回调方法
- c# - 几分钟后 Arduino uno 断开连接
- javascript - Js如何从一个字符串中得到数字的总和?
- javascript - 我的功能的点击仅在我点击链接/按钮两次时触发
- sql - 屏蔽实际值 - 我想将 SQL 服务器表中的字母数字值屏蔽为 x
- javascript - Vue.js 不使用 TextTrackCueList 更新 DOM