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
相关产品推荐
相关产品推荐

