Firebase: change the location of the service worke

2020-01-27 04:14发布

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?

3条回答
祖国的老花朵
2楼-- · 2020-01-27 04:45

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.

查看更多
beautiful°
3楼-- · 2020-01-27 04:48

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

查看更多
老娘就宠你
4楼-- · 2020-01-27 04:56

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

查看更多
登录 后发表回答