取消服务工作者创建的浏览器的通知

时间:2017-01-26 11:56:56

标签: javascript

我想知道是否可以从服务工作者为该网站创建的标签中运行的脚本取消通知?

这就是我现在所拥有的:

  • 我使用Firebase消息将消息推送给服务工作者。
  • 如果网站未打开或在后台,服务工作者会创建通知。

现在,当用户打开网站而不点击通知时,我想解雇它。我必须从网站的javascript中执行此操作,因为它只应在执行特定操作时关闭通知。我是否需要向服务工作者发送消息或..?

1 个答案:

答案 0 :(得分:0)

想出来。从客户端,您可以通过ServiceWorkerRegistration访问服务工作者,并且有一种方法可以获取SW注册的所有通知。

请参阅:ServiceWorkerRegistration.getNotifications()

还有另一种方法,但它涉及更多代码:向服务工作者发送消息(使用navigator.serviceWorker.controller.postMessage),获取通知(self.registration.getNotifications()),然后从那里取消它们。这就是我解决问题的方法,然后找到了第一个解决方案。但是,如果您需要让服务工作者做其他事情,这可能仍然有用。此外,在创建它的同一个地方取消通知是很好的:)