'showNotification' из неопределенного для push-уведомлений - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь отправить уведомления моего веб-сайта из браузера на Android и ПК, для этого я попытался Push-уведомления .

Я следовал документации и поставил следующий код -

Notification.requestPermission(function(status) {
    console.log('Notification permission status:', status);
});

function displayNotification() {
  if (Notification.permission == 'granted') {
    navigator.serviceWorker.getRegistration().then(function(reg) {
      console.log("Reg -"+reg);
      reg.showNotification('Hello world!');
    });
  }
  else{
    console.log(Notification.permission);
  }
}

Разрешение granted, но я получаю ошибку с reg, потому что он получает undefined.

вот скриншот моей консоли -

enter image description here

1 Ответ

1 голос
/ 26 июня 2019

См. Вкладку «Приложение» -> «Сервисные работники» на панели отладки Chrome.Я думаю, что вы не подключили сервисного работника в своем приложении.Для логики уведомлений вам нужно создать любого работника сервиса и включить его.

Например, добавьте следующий код в ваш корневой js-файл:

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('sw.js');
}

и создайте файл sw.js сследующее содержание:

self.addEventListener('install', (event) => {
    console.log('Installed');
});

self.addEventListener('activate', (event) => {
    console.log('Activated');
});

self.addEventListener('fetch', (event) => {
    console.log('Fetch request');
});

PS И ваш console.log("Reg -"+reg); перед reg init, так что это undefined:)

...