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

为什么Flutter中使用FCM的Data Payload无法接收通知,添加Notification Payload即可正常工作?

Flutter FCM纯Data Payload无法接收问题原因及解决方案

你当前编写的后台消息处理逻辑本身没有问题,纯Data Payload无法接收是由平台限制和请求配置错误导致的,核心原因如下:

  • 安卓平台后台运行限制
    安卓12及以上系统对纯Data类型的FCM消息有严格的后台唤醒限制,当应用进程被完全杀死时,谷歌服务框架默认不会投递纯Data消息,避免无效耗电。只有携带Notification Payload的高优先级通知类消息,才会被系统优先分发,唤醒对应应用处理。
  • 消息优先级未正确配置
    你当前的请求体未显式指定消息优先级,纯Data消息默认优先级为普通等级,系统会对这类消息做延迟、合并投递,甚至在省电模式下直接拦截。需要在请求体中显式添加高优先级配置,才能提升投递率。
    正确的请求体配置示例:
    {
      "data": {"user":"michael"},
      "to": "<FCM KEY USER>",
      "priority": "high",
      "android": {
        "priority": "high"
      },
      "apns": {
        "payload": {
          "aps": {
            "content-available": 1
          }
        }
      }
    }
    
  • iOS平台权限限制
    iOS系统默认不允许纯Data消息在应用被杀死的状态下唤醒应用,必须申请后台刷新权限,并且在APNs payload中添加content-available: 1字段,纯Data消息才能被正常投递。而携带Notification Payload的消息走系统通知展示通道,不受该限制。

注意:小米、华为等国内定制安卓系统对FCM消息有额外的省电拦截策略,即使配置了高优先级,纯Data消息也可能被系统拦截,需要针对国内ROM做额外的推送适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:06:01