Esto me está volviendo loca. He estado tratando de implementar notificaciones automáticas para un sitio web y encontré una solución (notificación API de Javacript). El caso es que las notificaciones no funcionan en los dispositivos móviles.
Leí sobre los trabajadores del servicio y he estado usando este código para pedir permiso al usuario y todo, pero todavía no funciona. No estoy seguro si estoy haciendo algo mal o qué. Leí que tiene que ser un sitio https, pero ese no parece ser el problema. También probé el complemento push.js plugin.js , pero hasta ahora no tuve éxito (incluso cuando la demostración de ese complemento que está en su sitio web está funcionando en mi navegador móvil) Este es el sitio web >>> https://park -inside.nl/prueba/
El botón "Establecer notificación" está destinado a mostrar una notificación cuando el tiempo de espera es inferior al tiempo seleccionado. Entonces, para probar esto, simplemente haga clic en "Establecer notificación", luego seleccione minutos más que la columna "Wachttijd" y actualice la página. Debería aparecer la notificación. Funciona en el navegador de escritorio, pero no en el móvil. ¿Alguna idea o sugerencia? Me encantaría y agradecería cualquier ayuda.
Nota: estoy usando Chrome 94 en Android 9 (ir)
Código que pide permiso de usuario:
Notification.requestPermission(function(result) { if (result === 'granted') { navigator.serviceWorker.ready.then(function(registration) { registration.showNotification('Notification with ServiceWorker'); }); } });Consulte la tabla de soporte del navegador para notificaciones web: https://caniuse.com/notifications .
Solo funcionan en Chrome en Android, no en el navegador de Android estándar.
Además, asegúrese de registrar un trabajador de servicio, incluso si está vacío, como se ve aquí: https://stackoverflow.com/a/31787926/10551293 .
Una demostración de las notificaciones está disponible aquí: https://serviceworke.rs/push-payload_demo.html .
Google también tiene un codelab paso a paso disponible aquí: https://developers.google.com/codelabs/pwa-training/pwa03--going-offline#0
Aparentemente, primero tuve que hacer esto para registrar un trabajador de servicio:
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('sw.js'); } No estoy muy seguro, pero estaba tratando de usar una ruta para el archivo sw.js , como esta: js/sw.js . Una vez que coloqué ese archivo en la raíz del proyecto, funcionó.
Además, agregué este código a ese archivo para registrar algunos eventos en la consola:
self.addEventListener('install', (event) => { console.log('Installed'); }); self.addEventListener('activate', (event) => { console.log('Activated'); }); self.addEventListener('fetch', (event) => { console.log('Fetch request'); });Gracias a swift-lynx por los enlaces a alguna documentación, donde encontré una solución:
https://developers.google.com/web/ilt/pwa/introduction-to-push-notifications