如何避免重复推送通知

Posted

技术标签:

【中文标题】如何避免重复推送通知【英文标题】:how to avoid duplicate Push Notification 【发布时间】:2021-05-06 17:18:38 【问题描述】:
importScripts('https://www.gstatic.com/firebasejs/8.4.3/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/8.4.3/firebase-messaging.js')
firebase.initializeApp(...config);

const messaging = firebase.messaging();

messaging.onBackgroundMessage(function (payload) 

console.log('sw-fb', payload);
const notificationTitle =  payload.notification.title;
const notificationOptions = 
      body:"something Body",
      data:...
 ;
return self.registration.showNotification(notificationTitle, notificationOptions);
,

这里我试图显示 来自 firebase 的推送通知,但是对于每个通知都会获得 两个通知。第一个是默认的,第二个来自我的服务人员。

谁能帮我修复重复的默认通知。

【问题讨论】:

【参考方案1】:

为避免默认通知,通过fcm发送时需要发送如下通知数据

 var payload = 
  notification:,
  data: 
    title:'title',
    body:'something body',
    image:path,
    icon...,
  token: registrationToken
 ;
messaging.send(payload).then((result) => console.log(result))

并将服务工作者更新为

messaging.onBackgroundMessage((payload) => 
 const  data = payload;
 const notificationTitle = data?.title;
 const notificationOptions = 
    image:data.image, title:data.title, body: data.body, icon:data.icon 
 self.registration.showNotification(notificationTitle, notificationOptions);
);

【讨论】:

以上是关于如何避免重复推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在iphone中获取推送通知[重复]

关闭应用程序时如何避免处理来自 GCM 的推送通知

如何知道用户在推送通知中点击了“不允许”[重复]

如何在iphone中实现Apple推送通知服务[重复]

如何在 Unity(C#,目前针对 iOS)中设置每周重复推送通知?

避免在 Android 中使用通知推送从 GCM 显示自动通知