【问题标题】:FCM notifications are not received in android Oreo when battery is low电池电量不足时,Android Oreo 中未收到 FCM 通知
【发布时间】:2018-04-30 08:56:45
【问题描述】:

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

我正在发送以下 JSON:

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

【问题讨论】:

  • 显示你如何发送推送通知,json
  • 您是否将优先级设置为 HIGH ?
  • { "to" : "XXXDecviceToken", "data" : { "callId" : "Call ID", "displayName" : "Abhilash", "room" : "2000" }, "time_to_live" : 0 }

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


【解决方案1】:

查看您的 JSON 请求:

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

有两个问题会阻止您在电池电量不足时发送通知:

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

默认情况下,通知消息以高优先级发送,数据消息普通优先级发送。 正常优先级可优化客户端应用的电池消耗,除非需要立即交付,否则应使用此优先级。对于具有正常优先级的消息,应用可能会以未指定的延迟接收消息

  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”更改为正值(至少有足够的时间让消息在电池重新充电后有机会传送)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2020-06-26
    相关资源
    最近更新 更多