我们可以仅将 react-native-firebase 用于 android 和 IOS 其他由 react-native 提供的 api 吗?

Posted

技术标签:

【中文标题】我们可以仅将 react-native-firebase 用于 android 和 IOS 其他由 react-native 提供的 api 吗?【英文标题】:Can we use react-native-firebase for android only and for IOS other api provided by react-native? 【发布时间】:2018-12-12 21:50:30 【问题描述】:

我已经实现了 Pushnotificationios ,一个由 react-native 提供的 api 工作正常。

最近我必须为 android 实现 pushnotification,我正在尝试使用 react-native-firebase@4.x.x 。我有特定于平台的处理程序,但适用于 android,但对于 IOS,应用程序在构建时崩溃并出现以下错误

版本详情: 反应原生:0.55 react-native-firebase:4.0.0

我尝试进行动态导入以摆脱 ios 的 react-native-firebase,但我不相信这种想法,因为它是一种 hack,会导致解析器错误。动态导入功能本​​身并不是一个稳定的功能。

.

【问题讨论】:

【参考方案1】:

我不知道你的代码是怎样的,但你可以做的是取决于平台,是否导入库。 像这样的事情是:

if (Platform.OS == 'android') 
  firebase = require('react-native-firebase');

(这不适用于导入)

我完全不推荐的另一件事,但它会起作用,是将 firebase 链接到 iOS,这样它就不会启动错误,并且在使用该库时,您可以根据平台对其进行限制。像这样:

if (Platform.OS == 'android') 
  const notificationsOpen = await firebase.notifications().getInitialNotification()

【讨论】:

从导入返回到要求?这是个好主意吗?我想知道在这种情况下,我们可能只为 android 或 ios 使用一些包,这些包可能会破坏其他包。我们应该如何很好地处理这些场景。 这是在 react-native 官方文档上的 const Component = Platform.select( ios: () => require('ComponentIOS'), android: () => require('ComponentAndroid') , )(); facebook.github.io/react-native/docs/platform-specific-code 我不认为这是一个糟糕的主意。 (抱歉今天回复)

以上是关于我们可以仅将 react-native-firebase 用于 android 和 IOS 其他由 react-native 提供的 api 吗?的主要内容,如果未能解决你的问题,请参考以下文章

仅将新文件从 S3 加载到 Redshift 的简单方法?

如何仅将 EJB 角色授予某些实体

仅将 S3 对象 URL 限制为网站上的登录用户

微服务是不是应该具有仅将操作转发到另一个微服务的操作?

如何使 <textarea> 仅将撇号识别为文本? [关闭]

WPF:仅将使用“AddFontMemResourceEx”安装的字体用于进程