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

Firebase React JS:同时收到重复推送的问题求助

请提供需要格式化的具体内容,我会按照指定的Markdown规则为你处理。


如果是针对你之前提到的「FCM推送重复通知」问题,以下是符合要求的解答:

解决FCM推送重复通知问题

问题原因

重复推送的核心原因是:当发送的FCM消息同时包含notification字段和data字段时,FCM会自动展示一条系统通知,而你的后台消息监听代码又手动调用了self.registration.showNotification,从而触发第二条重复通知。

解决方案

方案一:发送纯Data消息

调整推送消息结构,只保留data字段、移除notification字段。这样FCM不会自动展示通知,仅将消息传递给onBackgroundMessage回调,由你的代码统一处理通知展示。

方案二:移除手动展示逻辑

如果业务需要保留notification字段,直接删除代码中手动调用showNotification的逻辑,让FCM自动处理通知展示。修改后的代码如下:

messaging.onBackgroundMessage((payload) => {
  console.log("[firebase-messaging-sw.js] Received background message ", payload);
  // 移除手动展示通知的代码,由FCM自动处理
});

方案三:区分消息类型处理

若需兼容两种消息类型,可在回调中判断消息是否包含notification字段,再决定是否手动展示:

messaging.onBackgroundMessage((payload) => {
  console.log("[firebase-messaging-sw.js] Received background message ", payload);
  // 仅当消息无notification字段时,手动展示通知
  if (!payload.notification) {
    const notificationTitle = payload.data.title;
    const notificationOptions = {
      body: payload.data.body,
      tag: "myapp",
    };
    self.registration.showNotification(notificationTitle, notificationOptions);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:30:54