android - 当电池电量不足时,Android Oreo 不会收到 FCM 通知

标签 android firebase firebase-cloud-messaging android-8.0-oreo android-8.1-oreo

我目前正在针对 FCM 消息接收事件启动我的视频通话应用程序。它工作正常。但是在 Oreo 中,当 电池电量非常低 时,我没有收到任何 FCM 通知。但即使在那种情况下,Whatsapp 也能正常工作

我正在发送以下 JSON:

{
    "to" : "XXXDecviceToken",
     "data" : {
         "callId" : "Call ID",
         "displayName" : "Abhilash", 
         "room" : "2000"
     }, 
     "time_to_live" : 0
}

最佳答案

查看您的 JSON 请求:

{
    "to" : "XXXDecviceToken",
     "data" : {
         "callId" : "Call ID",
         "displayName" : "Abhilash", 
         "room" : "2000"
     }, 
     "time_to_live" : 0
}

有两个问题会导调用池电量不足时无法发送通知:

  1. 您没有指定优先级,因此数据消息的默认优先级是“正常”:

By default, notification messages are sent with high priority, and data messages are sent with normal priority. Normal priority optimizes the client app's battery consumption and should be used unless immediate delivery is required. For messages with normal priority, the app may receive the message with unspecified delay.

  1. 您将“time_to_live”指定为 0,这意味着如果 FCM 未能立即传递消息,则永远不会传递它(因为它不保存在 FCM 存储中)。

因此,将“正常”优先级与 0 的“time_to_live”相结合可能会阻止在电池电量不足时传递消息。

要尝试克服这个问题,您可以将优先级设置为“高”:

{
    "to" : "XXXDecviceToken",
     "data" : {
         "callId" : "Call ID",
         "displayName" : "Abhilash", 
         "room" : "2000"
     }, 
     "time_to_live" : 0,
     "priority" : "high"
}

或将“time_to_live”更改为正值(至少有足够的时间让消息有机会在电池充电后发送)。

关于android - 当电池电量不足时,Android Oreo 不会收到 FCM 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50097138/

相关文章:

java - 可重复使用的安卓布局

android - 如何使用 Intent 中的附加功能

java - 尝试将消息上传到 Firebase 数据库时出现错误 "found conflicting getters"

Android:Android 应用程序可以有多个 FirebaseMessagingServices

node.js - 我们可以使用 fcm-node 推送通知将对象发送到数据中吗

android - WIFI Direct 和 3G 数据 session 可以同时工作吗?

Android 后退按钮 - 从 Intent 中丢失信息

ios - Firebase 通知记录/日志 API

firebase - flutter 网络 : White screen (PersistedOffset error)

firebase-realtime-database - 使用 Firebase 的两人象棋游戏