You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase push notification设备空闲未充电时无法送达问题咨询

解决方案

  1. 修正FCM消息优先级配置
    你当前把priority: high写在了data字段中,这属于自定义业务字段,FCM官方不会识别该参数作为消息投递优先级。需要将"priority": "high"放到和registration_ids同级的根节点下,才能触发FCM的高优先级唤醒策略,绕过Doze模式的投递限制。

修正后的请求示例核心结构如下:

{
    "registration_ids": ["xxx"],
    "priority": "high", // 移到根节点
    "data": {},
    "android": {"priority": "high"},
    ...其余配置保持不变
}
  1. 排查厂商定制ROM的省电限制
    国产ROM(小米、华为、OPPO、vivo等)都有原生Android之外的定制省电策略,比如神隐模式、后台活动限制、自启动管控等,这类限制优先级高于系统原生的免电池优化权限。需要在对应设备的电量管理/应用管理设置中,将你的应用添加到「允许后台活动」「自启动白名单」「耗电不限制」列表中。

  2. 调整消息类型
    如果你的推送是纯数据(data-only)类型,Doze模式下高优先级消息的投递仍然会有概率被延迟。如果业务场景允许,建议将通知标题、内容等放到notification字段中,走FCM系统通知通道,这类消息的投递优先级远高于纯数据消息,在Doze模式下的送达率更高。

  3. 验证Google Play服务状态
    确认测试设备的Google Play服务为最新版本,旧版本Play服务存在Doze模式下FCM长连接唤醒异常的bug,会导致高优先级消息无法及时触达设备。

  4. 本地Doze模式模拟测试
    可以通过adb命令强制设备进入Doze模式快速复现问题,执行命令:

adb shell dumpsys deviceidle force-idle

执行后发送推送测试,可快速验证修复效果,不需要等待设备自然进入空闲状态。


内容的提问来源于stack exchange,提问作者Arif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:48:02