【问题标题】:e.$OneSignal.on is not a function for Nuxtjs PWA - OneSignale.$OneSignal.on 不是 Nuxtjs PWA 的函数 - OneSignal
【发布时间】:2020-04-19 14:30:18
【问题描述】:

我正在使用 @nuxtjs/pwa@nuxtjs/onesignal。 我在监听已挂载的 subscriptionChange 事件时遇到问题。 它与 localhost 配合得很好, 问题发生在生产

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

关于生产错误:

谢谢你,感激不尽。

【问题讨论】:

    标签: vue.js nuxt.js progressive-web-apps onesignal


    【解决方案1】:
    window.OneSignal = window.OneSignal || []
        window.OneSignal.push(() => {
          window.OneSignal.getUserId(async (userId) => {
            await this.$store.dispatch(
              'Authenticated/overview/updatePushID',
              userId
            )
          })
        })
    

    这对我来说在本地和生产中都有效

    【讨论】:

    • window.OneSignal = window.OneSignal || [] window.OneSignal.push(() => { window.OneSignal.getUserId(userId => { console.log(userId) }) }) } 我安慰过: -- 在本地,我可以看到 userId -- 生产, userId 为 Null
    • 检查你的一个信号配置我认为你需要让你的一个信号配置匹配你的 url 否则 user_id 将永远为空
    【解决方案2】:

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

    window.OneSignal = window.OneSignal || []
    window.OneSignal.push(() => {
      window.OneSignal.on('subscriptionChange', (isSubscribed) => {
        if (isSubscribed) {
          window.OneSignal.getUserId().then((deviceId) => {
            self.addDeviceId(deviceId)
          });
        }
      });
    })
    

    【讨论】:

    • 嗨,兄弟,我已经复制了你的。它也在本地工作。现在在生产中它不再是错误但不会将 playerId 发送到 OneSignal,它似乎不起作用。 ;(
    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多