I am trying to use Firebase messaging (web). Firebase by default searches for the file "firebase-messaging-sw.js" which holds the service worker.
The service worker script is expected to be on the absolute path of the application! For example : http://localhost/firebase-messaging-sw.js
How to change this default location?! Searching the official docs I found this method: useServiceWorker
which accepts a service worker registeration, but trying to use it I get an error that the method doesn't even exist!
So, How to change the location of the service worker for firebase messaging?
By using
useServiceWorker(registration)
you can usenotificationonclick
event on Firebase push messaging via exiting service worker.firebase.messaging().useServiceWorker(registration)
is working and solved my problem, but keep in mind that I don't know if:this is a secure way to get payload from the server.
this is the best way to handle push notifications.
As Michael has called out, the method to use is
useServiceWorker(<registration>)
.https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker
The Messaging class is what is returned when you call
firebase.message()
.So the sample would be:
I just tried this on the demo app on Github without issue: https://github.com/firebase/quickstart-js/tree/master/messaging
You should be able to do
firebase.messaging().useServiceWorker(registration)
and pass in an existing service worker registration. Note that you should do this as early as possible, before any calls to e.g.getToken()
oronMessage()
.