Firebase: change the location of the service worker

后端 未结 3 676
悲哀的现实
悲哀的现实 2020-11-29 06:01

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

相关标签:
3条回答
  • 2020-11-29 06:20

    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

    0 讨论(0)
  • 2020-11-29 06:23

    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.

    0 讨论(0)
  • 2020-11-29 06:35

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

    0 讨论(0)
提交回复
热议问题