电池电量不足时,未在Android Oreo中收到FCM通知

时间:2018-04-30 08:56:46

标签: 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
}

1 个答案:

答案 0 :(得分:1)

查看您的JSON请求:

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

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

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

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

    1. 您指定“time_to_live”为0,这意味着如果FCM无法立即传递邮件,则永远不会传递(因为它不会保存在FCM存储中)。
    2. 因此,将“正常”优先级与“time_to_live”组合为0可能会阻止在电池电量不足时传递消息。

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

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

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