如何在不支持的设备(如WebKit Safari)上禁用nuxt fire消息传递(fcm)



我有一个小型Nuxt SSR网站,通过FCM推送通知。对于推送通知(push-API(,我使用nuxt-fire。在Windows和Android的Chrome(闪烁引擎(或FireFox(壁虎引擎(中,这非常有效。现在,一位朋友遇到了一个问题,即网站没有显示任何内容。他正在使用苹果设备。苹果有WebKit的要求,所以Chrome也使用WebKit作为苹果的引擎。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

更新-解决方案

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

可能的原因:

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


旧答案

Pascal来自这里的新火。

正如您在这里看到的,我们在为您设置$fireMess时已经进行了if firebase.messaging.isSupported()检查。如果浏览器不支持Firebase消息,$fireMess将为undefined

因此,在调用$fireMess.requestPermission()getToken()之前(例如,在您的消息插件中,或者在您执行该操作的任何地方?(,您必须检查$fireMess是否存在,如下所示:

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

由于我不知道你到底是如何实现Firebase消息的,所以很难说问题到底在哪里——但可能就是这样。

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

如果这不能解决你认为可能存在的问题,请随时在我们的GitHub问题页面上创建问题,我们很乐意对此进行调查。

希望能有所帮助。

Pascal来自这里的新火。

正如您在这里看到的,我们在为您设置$fireMess时已经进行了if firebase.messaging.isSupported()检查。如果浏览器不支持Firebase消息,$fireMess将为undefined

因此,在调用$fireMess.requestPermission()getToken()之前(例如,在您的消息插件中,或者在您执行该操作的任何地方?(,您必须检查$fireMess是否存在,如下所示:

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

由于我不知道你到底是如何实现Firebase消息的,所以很难说问题到底在哪里——但可能就是这样。

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

如果这不能解决你认为可能存在的问题,请随时在我们的GitHub问题页面上创建问题,我们很乐意对此进行调查。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新