我正在尝试实现Firebase推送通知。我获得了部分成功,在收到通知后,我可以单击并控制进入“ firebase-messaging-sw.js”文件。 我将代码放在下面,这样您可以更清楚地了解我的问题。
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-messaging.js')
self.addEventListener('notificationclick', function(event) {
if (event.action === 'accept') {
// Like button was clicked
}
else if (event.action === 'declined') {
// Unsubscribe button was clicked
}
event.notification.close()
})
firebase.initializeApp({
messagingSenderId: "716766726073"
})
const messaging = firebase.messaging()
注册firebase-messaging-sw.js文件
if (navigator && navigator.serviceWorker)
{
navigator.serviceWorker
.register('/firebase-messaging-sw.js')//''
.then(registration => {
console.log("ServiceWorker registered with scope:",registration.scope)
})
.catch(e => console.error("ServiceWorker failed:", e))
}
下面是调用通知的功能
navigator.serviceWorker.getRegistration().then(function(reg) {
var options = {
body: "User Calling",
icon: details.img,
image: details.img,
requireInteraction: true,
vibrate: [100, 50, 100],
actions: [
{action: 'acceptCall', title: 'ACCEPT',
icon: ''},
{action: 'declineCall', title: 'DECLINE',
icon: ''},
]
}
reg.showNotification('Hello Team', options)
})
当我收到通知并单击操作按钮“ notificationclick”事件时,将触发firebase-messaging-sw.js上的事件。
我在User.js文件中只有很少的方法,想从firebase-messaging-sw.js文件中调用这些方法。我尝试导入,但它给运行时错误。 下面是文件结构。
Root
--Static
--firebase-messaging-sw.js
--Store
--User.js
我希望我很清楚我的疑问,我们将不胜感激。 谢谢。