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

Android端Firebase push notification推送3分钟接收延迟问题求助

Firebase推送稳定延迟3分钟接收的排查与修复

核心成因分类与对应解决方法

  • 消息优先级配置错误
    Firebase Cloud Messaging默认给控制台发送的通知消息分配normal优先级,安卓系统对普通优先级消息不会做实时投递,会等到设备维护窗口批量下发,3分钟是非常典型的批量调度延迟。
    修复方式:在控制台发送通知的「高级选项」中,将消息优先级手动调整为high;如果是服务端API发送,在消息payload里设置priority: "high"。注意高优先级消息不要滥发,否则会被FCM后台限流,甚至被系统判定为骚扰消息拦截。
  • 系统省电策略拦截FCM长连接
    不管是模拟器还是实体机,默认开启的电池优化都会限制后台应用的连接保活:
    1. 进入系统设置-对应应用-电池管理,将电池优化规则设置为不限制,国产ROM额外需要打开应用的自启动、后台活动权限;
    2. 模拟器必须选择带完整Google Play服务的官方镜像,不要用第三方精简镜像,同时将Google Play服务更新到最新版本,旧版本Play服务的FCM心跳间隔长达15分钟,更新后正常心跳间隔为28秒左右;
    3. 确认测试网络没有封禁FCM长连接使用的5228、5229、5230端口,如果网络路由不通,FCM会自动降级为轮询模式取消息,默认轮询间隔刚好是2-3分钟。
  • 发送方式本身的调度延迟
    不要用控制台的主题推送、分群推送功能做延迟测试,这类批量推送任务FCM后台本身会做排队调度,单设备测试必须直接拿设备的FCM注册token做单发测试。同时检查消息的TTL(存活时间)配置,不要手动设置过短的TTL值,默认TTL为4周,误设为180秒时也会出现消息缓存延迟投递的问题。

快速定位根因的调试方法

执行adb命令打开FCM详细日志:

adb shell setprop log.tag.FCM VERBOSE

触发推送后看日志中FCM服务实际收到消息的时间:

  • 如果FCM服务收到消息就有3分钟延迟,问题出在消息优先级、网络连通性、发送通道这三个环节;
  • 如果FCM服务收到消息是实时的,但是应用的FirebaseMessagingService回调晚3分钟,说明应用进程被系统冻结,补全后台启动、自启动权限即可。

正常配置下,单发高优先级消息的端到端延迟应该在500ms以内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:42:28