服务人员显示通知不起作用

时间:2020-02-21 14:10:18

标签: javascript service-worker

navigator.serviceWorker.register('/service-worker.js').then((reg) => {

})



Notification.requestPermission(function(result) {
    console.log('User Choice', result);
    if (result !== 'granted') {
      console.log('No notification permission granted!');
    } else {
        navigator.serviceWorker.ready
        .then(function(swreg) {
            console.log("blaxblux");
          swreg.showNotification('Successfully subscribed!', {body:'TEST'});
        });
    }
  });

这是我在main.js中的代码

它涉及console.log('blaxblux'),但根本不显示通知。浏览器显示带有允许按钮的弹出窗口时,请求权限起作用。

可能是什么问题?

(我正在使用最新版的chrome)

2 个答案:

答案 0 :(得分:5)

我遇到了类似的问题,但是在Windows计算机上关闭了Google Chrome浏览器的通知。我继续并启用了通知,然后它们开始神奇地工作。

Settings -> System -> Notifications & Actions

向下滚动到“从这些发件人获取通知”部分,然后将“ Google Chrome”(或您的首选浏览器)设置为“开”

答案 1 :(得分:1)

也许本文可以为https://developers.google.com/web/fundamentals/push-notifications/subscribing-a-user#requesting_permission

提供帮助

用于获取许可的API最近已从进行回调更改 返回承诺。问题在于,我们无法分辨 当前浏览器实现了什么版本的API,因此您 必须既实现又处理。

function askPermission() {
  return new Promise(function(resolve, reject) {
    const permissionResult = Notification.requestPermission(function(result) {
      resolve(result);
    });

    if (permissionResult) {
      permissionResult.then(resolve, reject);
    }
  })
  .then(function(permissionResult) {
    if (permissionResult !== 'granted') {
      throw new Error('We weren\'t granted permission.');
    }
  });
}