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

如何通过Postman使用FCM发送推送并解决重复通知及解析异常问题

问题根因
  • 你调整后的请求报文不符合FCM的官方格式规范:data是和notification平级的顶级字段,不能嵌套在notification内部。FCM服务器虽然返回请求成功,但不会识别嵌套在notification里的data字段,也不会正常下发通知到客户端。
  • 你之前收到两条重复通知的原因是:notification和data字段同时携带了body/title等通知配置,系统会自动根据notification字段弹出一次通知,你的Flutter代码监听FCM回调时又根据data字段的内容手动弹出了第二次通知。
解决方案

第一步:修正请求报文格式

保留notification和data平级的结构,notification里只放通知展示相关的配置,data里只放你需要的自定义参数,不要重复放通知配置:

{
    "to": "cu6HFvgXSCyKz5kjp..........",
    "notification": {
        "sound": "default",
        "body": "test body",
        "title": "test title",
        "content_available": true,
        "priority": "high"
    },
    "data": {
        "ride_request_id": "asdfasd"
    }
}

第二步:修正Flutter端的通知处理逻辑

使用firebase_messaging包时按场景处理,避免重复弹通知:

  • 应用在后台/杀死状态:FCM会自动根据notification字段的内容弹出系统通知,无需你手动弹通知,用户点击通知时直接从回调参数的data字段读取ride_request_id即可。
  • 应用在前台状态:FCM默认不会弹出系统通知,你如果需要前台展示通知,可以从回调的notification字段读取标题、内容,配合flutter_local_notifications包手动弹一次即可,不要读取data字段的内容重复触发通知。
验证步骤
  1. 用修正后的报文在Postman发起请求,确认返回成功
  2. 先测试后台场景:杀掉应用发请求,确认只收到1条通知,点击后能正常拿到ride_request_id
  3. 再测试前台场景:打开应用发请求,确认按你的需求要么不弹通知,要么只弹1次自定义通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:33:01