служащий показывает уведомление не работает - PullRequest
2 голосов
/ 21 февраля 2020
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)

1 Ответ

1 голос
/ 21 февраля 2020

Может быть, эта статья может помочь 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.');
    }
  });
}
...