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

Flutter项目firebase_messaging在Android10及以上APP长时间闲置后失效

Android 10及以上系统APP闲置时Firebase推送接收失败解决方案

必做排查项

  • 校验Firebase消息类型与优先级:安卓10+系统对后台应用的纯数据消息会强制延迟投递,仅前台运行时可正常接收。服务端下发推送必须同时包含notification和data字段,同时指定android.priority: "high"参数,标记为高优先级混合消息才能在后台/闲置状态下被正常投递。
  • 检查AndroidManifest权限与服务配置:
    • 安卓13及以上版本必须申请POST_NOTIFICATIONS动态权限,未获得权限的应用所有推送都不会被系统展示
    • 自定义推送前台服务必须添加android:foregroundServiceType="dataSync"属性,否则安卓12及以上系统会禁止服务在后台启动
  • 适配APP待机分区规则:安卓10新增的应用待机桶机制优先级高于Doze模式,长时间闲置的应用会被划入受限桶,所有高优先级任务包括Firebase推送都会被延迟至少2小时投递。必须引导用户将应用添加到电池优化白名单,原生申请代码如下:
// 跳转电池优化白名单设置页
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
    intent.data = Uri.parse("package:" + packageName)
    startActivity(intent)
}
  • 校验Firebase依赖版本:使用低于firebase-bom:32.0.0版本的SDK未适配安卓10+的后台调度规则,会出现令牌刷新异常、高优先级消息标记失败的问题,需升级到最新稳定版SDK。

可用规避方案

  • 若业务必须使用纯数据类型推送,可申请SCHEDULE_EXACT_ALARM权限,通过精确闹钟定期唤醒应用主动拉取消息,注意唤醒间隔不要小于15分钟,避免被系统判定为恶意应用纳入受限名单。
  • 不要使用自定义后台服务接收推送,直接继承官方FirebaseMessagingService实现逻辑,自定义服务在安卓10+的后台启动限制下会被系统自动回收,无法长期存活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:24:00