style react change attribute javascript firebase firebase-cloud-messaging service-worker

javascript - react - title css



Firebase: cambia la ubicaciĆ³n del trabajador del servicio. (3)

Estoy tratando de usar la mensajería Firebase (web). Por defecto, Firebase busca el archivo "firebase-messaging-sw.js" que contiene al trabajador del servicio.

Se espera que el script del trabajador de servicio esté en la ruta absoluta de la aplicación. Por ejemplo: http://localhost/firebase-messaging-sw.js

¿Cómo cambiar esta ubicación por defecto? Buscando en los documentos oficiales, encontré este método: useServiceWorker que acepta un registro de trabajadores de servicio, pero al intentar usarlo obtengo el error de que el método ni siquiera existe.

Entonces, ¿cómo cambiar la ubicación del trabajador del servicio para la mensajería de base de fuego?


Al usar useServiceWorker(registration) , puede usar el evento notificationonclick en la mensajería instantánea de Firebase a través del trabajador de servicio que sale.

firebase.messaging().useServiceWorker(registration) está funcionando y resolvió mi problema, pero tenga en cuenta que no sé si:

  • Esta es una forma segura de obtener la carga útil del servidor.

  • Esta es la mejor manera de manejar las notificaciones push.


Como Michael ha llamado, el método a utilizar es userServiceWorker(<registration>) .

https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker

La clase de mensajería es lo que se devuelve cuando llama a firebase.message() .

Así que la muestra sería:

navigator.serviceWorker.register(''./example/sw.js'') .then((registration) => { messaging.useServiceWorker(registration); // Request permission and get token..... });

Acabo de probar esto en la aplicación de demostración en Github sin problema: https://github.com/firebase/quickstart-js/tree/master/messaging


Debería poder hacer firebase.messaging().useServiceWorker(registration) y pasar un registro de trabajador de servicio existente. Tenga en cuenta que debe hacer esto lo antes posible, antes de cualquier llamada a, por ejemplo, getToken() u onMessage() .