e.$OneSignal.on 不是 Nuxtjs PWA 的函数 - OneSignal

e.$OneSignal.on is not a function for Nuxtjs PWA - OneSignal

我正在使用 @nuxtjs/pwa@nuxtjs/onesignal。 我在安装时遇到 subscriptionChange 事件的侦听器问题。 它与 localhost 一起工作得很好, 问题发生在 production.

mounted() {
  let self = this;
  this.$OneSignal.push(() => {
  self.$OneSignal.on('subscriptionChange', (isSubscribed) => {
    if (isSubscribed) {
      self.$OneSignal.getUserId().then((deviceId) => {
        self.addDeviceId(deviceId)
      });
     }
    });
  });
}

生产错误:

谢谢你和感激。

幸运的是,几个小时前我遇到了这些问题,您需要使用全局 window 方法访问 Onesignal

window.OneSignal = window.OneSignal || []
window.OneSignal.push(() => {
  window.OneSignal.on('subscriptionChange', (isSubscribed) => {
    if (isSubscribed) {
      window.OneSignal.getUserId().then((deviceId) => {
        self.addDeviceId(deviceId)
      });
    }
  });
})
window.OneSignal = window.OneSignal || []
    window.OneSignal.push(() => {
      window.OneSignal.getUserId(async (userId) => {
        await this.$store.dispatch(
          'Authenticated/overview/updatePushID',
          userId
        )
      })
    })

尽管在本地和生产环境中这对我都有效