firebase.messaging needs a SW registration. If you don’t specify a registration, it creates a new registration at the root level and needs a firebase-messaging-sw.js file at the root
useServiceWorker is deprecated

Registration can be passed when you getToken():

if ("serviceWorker" in navigator) {
navigator.serviceWorker
  .register("./firebase-messaging-sw.js")
  .then(function(registration) {
    console.log("Registration successful, scope is:", registration.scope);
    messaging.getToken({vapidKey: 'YOUR_VAPID_KEY', serviceWorkerRegistration : registration })
      .then((currentToken) => {
        if (currentToken) {
          console.log('current token for client: ', currentToken);

          // Track the token -> client mapping, by sending to backend server
          // show on the UI that permission is secured
        } else {
          console.log('No registration token available. Request permission to generate one.');

          // shows on the UI that permission is required 
     }
      }).catch((err) => {
        console.log('An error occurred while retrieving token. ', err);
        // catch error while creating client token
      });  
    })
    .catch(function(err) {
      console.log("Service worker registration failed, error:"  , err );
  }); 
}

 

Support On Demand!

Cloud