【问题标题】:chrome notifications unsubscribe eventchrome 通知取消订阅事件
【发布时间】:2018-07-21 14:57:32
【问题描述】:

是否可以捕获取消订阅事件?

这是我用来为用户订阅通知的代码

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.ready.then(function(reg) {
      reg.pushManager.subscribe({
        userVisibleOnly: true
      }).then(function(sub) {
          add_endpoint_to_db( sub ); // im adding the user deatils to my db
      }).catch(function(e) {
        if (Notification.permission === 'denied') {

        } else {

        }
      });
  });

}

如果用户选择手动删除通知

我想捕捉动作以便从数据库中删除他的条目

那么是否可以捕获通知更改事件?

【问题讨论】:

  • 嗨,我也在寻找这个,因为对于数据库中的许多条目,在手动订阅新条目后创建。
  • 当我转到 chrome://settings/content/notifications 并删除您的网站从那里显示通知的权限时,我什至不需要目前将您的网站本身加载到我的浏览器中......所以我看不到任何人可以捕捉到该事件,即使它存在于那种情况下......
  • @CBroe 您好,感谢您的回复,但在这种情况下,如何删除附加到数据库中用户的端点?因为下次用户将允许通知我正在生成一个新端点,这为用户创建了 2 个端点(因为它们总是不同的)。

标签: javascript google-chrome push-notification service-worker web-push


【解决方案1】:

取消订阅是可以通过设置选项卡和离线模式完成的浏览器设置,因此您无法获取该信息

但是一旦用户取消订阅(即删除服务工作者注册),那么在发送下一条消息时,您应该从 FCM API 收到一条失败消息。(如果您使用的是 firebase)

所以这样想.... :)

【讨论】:

    【解决方案2】:

    您正在寻找pushsubscriptionchange 活动

    self.addEventListener('pushsubscriptionchange', function() {
      // remove the entry from DB
    });
    

    【讨论】:

    • 嗨,如果用户没有互联网怎么办?连接后会发送请求吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2020-12-26
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多