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 work
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 callfirebase.message().
So the sample would be:
navigator.serviceWorker.register('./example/sw.js')
.then((registration) => {
messaging.useServiceWorker(registration);
// Request permission and get token.....
});
I just tried this on the demo app on Github without issue: https://github.com/firebase/quickstart-js/tree/master/messaging
By using useServiceWorker(registration) you can use notificationonclick 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.
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() or onMessage().