【发布时间】:2020-09-01 13:36:50
【问题描述】:
我一直致力于将 FCM 集成到我的 Vue PWA 应用中。到目前为止,我已经设法让后台通知工作,但是当应用程序在前台不起作用时处理通知。这是我的代码。
src/App.vue
import firebase from './plugins/firebase'
export default {
// Other stuff here...
methods: {
prepareFcm () {
var messaging = firebase.messaging()
messaging.usePublicVapidKey(this.$store.state.fcm.vapidKey)
messaging.getToken().then(async fcmToken => {
this.$store.commit('fcm/setToken', fcmToken)
messaging.onMessage(payload => {
window.alert(payload)
})
}).catch(e => {
this.$store.commit('toast/setError', 'An error occured to push notification.')
})
}
},
mounted () {
this.prepareFcm()
}
}
public/firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/5.5.6/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/5.5.6/firebase-messaging.js')
firebase.initializeApp({
messagingSenderId: '123456789'
})
const messaging = firebase.messaging()
messaging.setBackgroundMessageHandler(function (payload) {
return self.registration.showNotification(payload)
})
src/plugins/firebase.js
import firebase from '@firebase/app'
import '@firebase/messaging'
// import other firebase stuff...
const firebaseConfig = {
apiKey: '...',
authDomain: '...',
databaseURL: '...',
projectId: '...',
storageBucket: '...',
messagingSenderId: '123456789',
appId: '...'
}
firebase.initializeApp(firebaseConfig)
export default firebase
我做错了什么?
【问题讨论】:
-
在成功获得 FCM Token 后,您是否尝试将 onMessage 块“messaging.onMessage(payload => {window.alert(payload)})”移出函数。我觉得这个onMessage函数在拿到FCM之后就不需要放入promise了
-
我遇到了同样的问题,如果你碰巧解决了请告诉我
标签: javascript firebase vue.js firebase-cloud-messaging