无法使用Firebase从Serviceworker.js文件访问Vue.js操作

时间:2019-02-14 08:09:36

标签: firebase vue.js push-notification firebase-cloud-messaging nuxt.js

我正在尝试实现Firebase推送通知。我获得了部分成功,在收到通知后,我可以单击并控制进入“ firebase-messaging-sw.js”文件。 我将代码放在下面,这样您可以更清楚地了解我的问题。

下面是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()

下面是User.js文件代码

注册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

我希望我很清楚我的疑问,我们将不胜感激。 谢谢。

0 个答案:

没有答案