【问题标题】:after unsubscribe, permission is still granted (PUSH NOTIFICATION WEB)取消订阅后,仍然授予权限(PUSH NOTIFICATION WEB)
【发布时间】:2020-07-07 11:18:52
【问题描述】:

我正在使用以下代码。

try {
    const registration = await navigator.serviceWorker.ready;
    const subscription = await registration.pushManager.getSubscription();
    await subscription.unsubscribe();
} catch(error) {
    throw error;
}

即使此代码成功执行后,当我刷新页面并记录 Notification.permission 时,它仍然被授予。但它应该是 default 。我错过了什么吗?

如果用户第一次授予权限,然后取消订阅,Notification.permission 永远不会改变?

【问题讨论】:

    标签: javascript push-notification service-worker


    【解决方案1】:

    据我了解,在调用取消订阅后,根据this,结果应该是“拒绝”,因为这是一个明确的用户选择。 执行代码后,您能否检查权限是否在设置中正确删除?在 chrome 上转到设置 -> 隐私 -> 内容设置 -> 向下滚动到通知或打开 chrome://settings/content/notifications

    如果通知仍然被授予,请尝试使用Mozilla's example 代码替换您的代码以进行测试,看看这是否有效:

    navigator.serviceWorker.ready.then(function(reg) {
      reg.pushManager.getSubscription().then(function(subscription) {
        subscription.unsubscribe().then(function(successful) {
          console.log("unsubscribed");
        }).catch(function(e) {
          console.log("Something went wrong");
        })
      })        
    });
    

    spec(草案)说,“当服务工作者注册被清除时,推送订阅被删除。”

    尝试另外注销 serviceworker,看看是否能解决问题:

    registration.unregister().then(function(boolean) {
          // if boolean = true, unregister is successful
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多