web-dev-qa-db-fra.com

Firebase: change l'emplacement du technicien

J'essaie d'utiliser la messagerie Firebase (Web). Firebase recherche par défaut le fichier "firebase-messaging-sw.js" contenant le service worker.

Le script du technicien de service est censé se trouver sur le chemin absolu de l'application! Par exemple: http: //localhost/firebase-messaging-sw.js

Comment changer cet emplacement par défaut?! En cherchant dans la documentation officielle, j'ai trouvé cette méthode: useServiceWorker qui accepte un enregistrement de prestataire de services, mais en essayant de l'utiliser, j'obtiens une erreur indiquant que la méthode n'existe même pas!

Alors, comment changer l’emplacement du service worker pour la messagerie firebase?

30
Dewan159

Comme Michael l'a appelé, la méthode à utiliser est useServiceWorker(<registration>).

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

La classe Messaging correspond à ce qui est renvoyé lorsque vous appelezfirebase.message().

Donc, l'échantillon serait:

navigator.serviceWorker.register('./example/sw.js')
.then((registration) => {
  messaging.useServiceWorker(registration);

  // Request permission and get token.....
});

Je viens d'essayer cela sur l'application de démonstration sur Github sans problème: https://github.com/firebase/quickstart-js/tree/master/messaging

48
Matt Gaunt

Vous devriez pouvoir faire firebase.messaging().useServiceWorker(registration) et passer un enregistrement d’employé de service existant. Notez que vous devez le faire le plus tôt possible avant tout appel, par exemple. getToken() ou onMessage().

8
Michael Bleigh

En utilisant useServiceWorker(registration), vous pouvez utiliser l'événement notificationonclick sur la messagerie Push Firebase via un agent de service sortant.

firebase.messaging().useServiceWorker(registration) fonctionne et a résolu mon problème, mais gardez à l'esprit que je ne sais pas si:

  • c'est un moyen sécurisé pour obtenir des données utiles du serveur.

  • c'est le meilleur moyen de gérer les notifications Push.

0
Tushar Acharekar