Estoy tratando de presionar las notificaciones de mi sitio web desde el navegador a Android y la PC, ya que intenté notificaciones push.

Seguí la documentación y puse el siguiente código.

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);
  }
}

El permiso es granted pero estoy recibiendo error con reg porque está recibiendo undefined.

Aquí está la captura de pantalla de mi consola -

enter image description here

0
Pankaj Sharma 25 jun. 2019 a las 22:15

1 respuesta

La mejor respuesta

Consulte la pestaña "Aplicación" -> "Trabajadores de servicio" en el panel de depuración de Chrome. Creo que no conectaste un trabajador de servicio en tu aplicación. Para la lógica de notificación, debe crear cualquier trabajador de servicio y habilitarlo.

Por ejemplo, agregue el siguiente código en su archivo JS root:

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

Y cree un archivo sw.js con el siguiente contenido:

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

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

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

PD Y su console.log("Reg -"+reg); está antes del inicio reg, por lo que es undefined :)

1
Danil Valov 25 jun. 2019 a las 22:58