取消发送的Web推送通知



当他们(例如(收到私人消息时,我正在向我的网站用户发送推送通知。该通知将向该用户订阅的所有浏览器。因此可能是台式机,移动,工作计算机等。

我想做的是在用户读取消息后关闭所有已发送的通知。

因此,用户登录移动设备,读取私人消息 - 此时,我希望关闭/取消该PM的所有先前发送的通知。

这是可能的吗?

预先感谢!马特

是的,这是可能的,但不是默默。例如,Chrome将用新通知替换通知,并说"此站点已在后台更新"。

有两个独立的API:推动API,"使Web应用程序能够从服务器接收消息",以及"用于配置和显示向用户配置和显示桌面通知的通知API"。/p>

通知API提供Notification.close(),它取消了通知的显示。

您可以使用推动API触发Notification.close()。这是您的服务工作者应该使用的样本:

self.addEventListener('push', async event => {
  const data = event.data.json();
  if (data.type === 'display_notification') {
    self.registration.showNotification(data.title, data.options);
  } else if (data.type === 'cancel_notification') {
    const notifications = await self.registration.getNotifications({
      tag: data.notificationTag
    });
    for (notification of notifications) {
      notification.close();
    }
  } else {
    console.warn("Unknown message type", event, data);
  }
});

但是!此设计意味着您的cancel_notification消息不会显示通知。这违反了一些浏览器策略,例如Chrome将显示一个新的通知,说"此站点已在后台更新"。

相关内容

  • 没有找到相关文章

最新更新