如何在不受支持的设备(例如WebKit Safari)上禁用nuxt-fire消息传递(fcm)? 可能的原因:

我有一个小的Nuxt SSR网站,其中包含通过FCM进行推送的通知。对于推送通知(Push-API),我使用nuxt-fire。在Windows和Android的Chrome(闪烁引擎)或FireFox(Gecko引擎)中,效果很好。现在,一个朋友有一个问题,该网站不显示任何内容。他正在使用Apple设备。苹果有WebKit的要求,因此Chrome也将WebKit用作Apple的引擎。 WebKit不支持Push-API,但有其自己的解决方案APN(Apple Push Notifications)。

WebKit下的错误消息如下:“ FirebaseError:消息传递:此浏览器不支持使用Firebase SDK所需的API。(消息/不支持的浏览器)”

现在,我正在寻找一种方法,以将不支持nuxt-fire的Firebase消息加载到不受支持的设备/引擎上的Nuxt.js中(Internet Explorer也不支持Push API)。这是JS中检查支持的设备/引擎的可能性:

if (firebase.messaging.isSupported())
    const messaging = firebase.messaging();
}

但是在Nuxt.js中,如何在nuxt-fire中使用它呢?

在nuxt.config.js中,我像这样配置nuxt-fire模块:

    [
      'nuxt-fire',{
        config: {
          development: {
            ...
          },production: {
            ...
          }
        },useonly: ['storage','messaging'],customEnv: false,}
    ]

在nuxt.config.js中有没有办法做到这一点?还是作为插件/中间件?

非常感谢您,

Jakob

as25863066 回答:如何在不受支持的设备(例如WebKit Safari)上禁用nuxt-fire消息传递(fcm)? 可能的原因:

更新-解决方案

事实证明,可以通过重新安装模块来解决此问题。为确保其正确安装,请删除node_modules文件夹删除package-lock.json ,然后重新运行npm i-应该可以解决。

可能的原因:

在v2.4.0中,我们重新排列了插件的文件夹结构,请参见Release Notes。如果出现Template src not found,我们会在发行说明中提到重新安装软件包。由于某种原因,您的应用程序需要修复2个npm install?也许没有删除package-lock.json,我想到的另一个原因是主机上的node_modules可能已经完成缓存(例如,在Netlify上,您应该执行Clear Cache and trigger deploy),这可能是为什么部署的应用程序坏了。


旧答案

这里nuxt-fire的帕斯卡。

您可以看到here,在为您设置$ fireMess时,我们已经进行了if firebase.messaging.isSupported()检查。如果浏览器不支持Firebase Messaging,则$ fireMess将为undefined

因此,在调用$fireMess.requestPermission()getToken()(例如,在消息传递插件中,或在任何地方执行此操作)之前,您需要做的是检查$fireMess是否存在,就像这样:

if (!this.$fireMess) {
   // No browser support
   return
}

由于我不知道您实施Firebase Messaging的精确程度,因此很难确切说明问题出在哪里-也许就是这样。

请注意,nuxt-fire所做的只是将$ fireMess注入到全局上下文中,我们不会进行任何初始化。

如果这不能解决您的问题,您认为可能是问题,请随时在我们的GitHub issues page上创建问题,我们很乐意进行调查。

希望有帮助。

这里nuxt-fire的帕斯卡。

您可以看到here,在为您设置$ fireMess时,我们已经进行了if firebase.messaging.isSupported()检查。如果浏览器不支持Firebase Messaging,则$ fireMess将为undefined

因此,在调用$fireMess.requestPermission()getToken()(例如,在消息传递插件中,或在任何地方执行此操作)之前,您需要做的是检查$fireMess是否存在,就像这样:

if (!this.$fireMess) {
   // No browser support
   return
}

由于我不知道您实施Firebase Messaging的精确程度,因此很难确切说明问题出在哪里-也许就是这样。

请注意,nuxt-fire所做的只是将$ fireMess注入到全局上下文中,我们不会进行任何初始化。

如果这不能解决您的问题,您认为可能是问题,请随时在我们的GitHub issues page上创建问题,我们很乐意进行调查。

希望有帮助。

本文链接:https://www.f2er.com/3131835.html

大家都在问