5

我有一个运行良好的网络通知脚本。但是,当我在 chrome 版本 43 中进行测试时,我收到错误“DOMException:注册失败 - 权限被拒绝”。此错误发生在订阅阶段。

这是通常的注册过程的代码片段

navigator.serviceWorker.register('sw.js').then(function(reg) {
    console.log('[ServiceWorker] Registration Obj', reg);
    reg.pushManager.subscribe({
        userVisibleOnly: true
    }).then(function(sub) {
        //This never executes and catch gets called
        console.log('Subscription successful, Subscription endpoint:', sub.endpoint);
    }).catch(function(error) {
        console.log("Error during subscription ", error);
    });
}).catch(function(error) {
    if (Notification.permission === 'denied') {
        console.warn('Permission for Notifications was denied');
    } else {
        console.error('Unable to subscribe to push.', error);
    }
});

在上面的代码中,错误发生在我执行的步骤中reg.pushManager.subscribe()

  • 这在 chrome 49 中不会发生。
  • 这个错误总是出现在 chrome 版本 43 上。

[注意] 我认为这是 chrome 版本 43 的一般问题,但是当我检查 goroost.com 和 pushcrew 等网站时,它们似乎工作正常。只有我的不工作

4

4 回答 4

11

我遇到过这个问题。除了般若答案外,这可能是由于浏览器通知在屏蔽与否时不小心点击造成的。要在 Chrome 中解决此问题,请转到设置->单击“显示高级设置”->在“隐私”下单击“内容设置”->然后在“通知”下选择“管理异常”。进入此处后,允许通知受影响的 URL。

于 2016-10-23T12:55:09.840 回答
5

我遇到过类似的问题。您特别关注 chrome 版本 43。

  1. 检查您的manifest.json. 由于您已经告知它适用于更高版本,我假设您错过了清单中的某些内容。在此链接中,Matt Gaunt 建议如果清单存在问题,可能会发生此错误。

  2. 确保末尾没有尾随逗号。

  3. 此外,版本 43 不支持通知对象中的数据属性,并且不允许在单击通知时打开窗口,因此您也需要注意这些问题。

于 2016-03-21T17:13:05.043 回答
1

您可能还配置了 chrome 以阻止所有通知。转到chrome://settings/content/notifications并确保滑块已滑动。

于 2019-03-18T14:51:04.550 回答
-1

图 1

图 2

上面的 Todo 2 图像将解决您的问题。

于 2020-08-07T04:26:06.880 回答