Моему коду требовался только пинг для обновления sh переменных после того, как уведомление было отправлено работнику службы Firebase.
Основная ошибка, которую я сделал, - это попытаться протестировать его в среде разработчика. Мне пришлось развернуть окончательный код на сервере https, чтобы он заработал.
Весь мой firebase-messaging-sw. js выглядит так:
// firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/7.6.2/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/7.6.2/firebase-messaging.js')
const firebase_config = {
apiKey: '{your api key}',
projectId: '{your product id}',
messagingSenderId: '{your sender id}',
appId: '{your appid}'
}
firebase.initializeApp(firebase_config)
// not needed
const messaging = firebase.messaging()
console.log('Token', messaging.getToken())
// not needed
в main. js Я запустил приложение следующим образом:
const firebase_config = {
apiKey: {VUE_APP_FIREBASE_APIKEY},
authDomain: {VUE_APP_FIREBASE_AUTHDOMAIN},
databaseURL: {VUE_APP_FIREBASE_DATABASE_URL},
projectId: {VUE_APP_FIREBASE_PROJECT_ID},
storageBucket: {VUE_APP_FIREBASE_STORAGE_BUCKET},
messagingSenderId: {VUE_APP_FIREBASE_MESSAGING_SENDER_ID},
appId: {VUE_APP_FIREBASE_APP_ID}
}
firebase.initializeApp(firebase_config)
navigator.serviceWorker.addEventListener('message', event => {
console.log('Push Notification Recieved') // refresh code goes here
})
Достаточно было addEventListener, мне не нужны были разные пользовательские обработчики сообщений.