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?
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
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()
.
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.