android - 电池电量不足时,Android Oreo 中未收到 FCM 通知
问题描述
我目前正在 FCM 消息接收事件上启动我的视频通话应用程序。它工作正常。但是在奥利奥中,当电池电量很低时,我没有收到任何 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
}
有两个问题可能会阻止您在电池电量不足时发送通知:
- 您没有指定优先级,因此数据消息的默认优先级是“正常”:
默认情况下,通知消息以高优先级发送,数据消息以普通优先级发送。正常优先级可优化客户端应用程序的电池消耗,除非需要立即交付,否则应使用此优先级。对于具有正常优先级的消息,应用程序可能会以未指定的延迟接收消息。
- 您将“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”更改为正值(至少有足够的时间让消息在电池重新充电后有机会传递)。
推荐阅读
- unity3d - 是否可以在场景模式下玩你的统一游戏?
- php - php 8.0.2 中关联数组键的行为与 php 7 不同吗?我应该用引号将数组键括起来吗?
- c++ - 将 uint8_t 缓冲区字节转换为另一种类型时如何绕过严格的别名?
- javascript - 为什么反应组件中的数据未定义?
- log4j - 是否可以使用 log4j 或 logback 以粗体或颜色突出显示文本
- macos - 活动 NSView 焦点更改时接收触发器
- python - 更新函数参数中列表的范围
- powerbi - 使用 Power Query 堆叠列
- javascript - OOP - 定义一个只有静态方法的类或定义一个只有一个实例的类是标准的吗?
- python - SQL executemany() 与 python 和一个数组和 ON DUPLICATE KEY