【问题标题】:React Native and Firebase 3React Native 和 Firebase 3
【发布时间】:2016-09-26 13:41:07
【问题描述】:

我正在尝试集成 React Native 和 Firebase 3 身份验证。我的代码。

import { FIREBASE_CONFIG } from '../config';
import firebase from 'firebase/app';
import firebaseDatabase from 'firebase/database';
import firebaseAuth from 'firebase/auth';

firebase.initializeApp(FIREBASE_CONFIG);

export const rootRef = firebase.database();
export const authRef = firebase.auth();
配置

module.exports = {
  FIREBASE_CONFIG: {
    apiKey: "long string from firebase",
    authDomain: "xxxxx.firebaseapp.com",
    databaseURL: "https://xxxxx.firebaseio.com",
    storageBucket: "xxxxx.appspot.com"
  }
}

但是……

我错过了什么?如果我是,你能指出我正确的方向吗 配置

  • React Native 0.26.2
  • Firebase 3.0.2

【问题讨论】:

标签: javascript firebase react-native firebase-authentication


【解决方案1】:

新的 firebase 不支持 react-native。 如果您想在 react-native 中使用 firebase,请使用 firebase 版本 2.4.2。 在版本 3 中,无法使用 firebase auth,但可以在 firebase3 中使用 realTimeDatabase。 如果你想使用 firebase3 auth,我推荐使用 web view,react-native-login,但我觉得这样不太好。

【讨论】:

  • 真的吗?将我的 firebase 降级回 2.4.2 但这些感觉不对。 firebase 怎么不支持 rn?
【解决方案2】:

firebase Javascript SDK 3.1.0 的新版本具有 React Native 兼容性。

https://firebase.google.com/support/release-notes/js#3.1.0

【讨论】:

  • 如果有人想要更多指导,这里是 tutorial 用于 Firebase 电子邮件/密码身份验证,我将 Android 的 react native 放在一起(同样的方法可以应用于 iOS)。
【解决方案3】:

要使用 Firebase JS SDK 3.1+,您可能需要导入整个包:

import firebase from 'firebase'

而不仅仅是firebase/app 等,否则您可能会收到此错误:

未找到 React 本机兼容性库。

【讨论】:

    【解决方案4】:

    虽然 Firebase JS SDK 现在确实适用于 react-native,但它主要是为 web 构建的,通常不是 react-native 的最佳解决方案。

    Firebase Web SDK 完全在 react native 的 JS thread 上运行,因此会影响您的应用程序帧速率(该链接很好地解释了这一点)。

    在我的测试中,原生 firebase SDK 的速度大约比使用 Web SDK 快 2-3 倍。

    但除了潜在的性能影响之外,还有很多功能您将无法在 android/ios 设备上与 Web SDK 一起使用。例如:

    • 通知/FCM
    • 存储上传/下载
    • Firebase 崩溃报告
    • 分析
    • 使用社交身份验证提供程序

    最好的方法是使用原生 android/ios firebase sdk 运行,并在它们和您的 js 代码之间架起一座桥梁(即原生模块设置)。

    谢天谢地,您不必自己实现,已经有模块可以为您执行此操作:

    react-native-firebase 例如镜像 web sdk 的 api js 端,但使用本机 android & ios firebase sdk 在本机端执行。它与您可能已经实现的任何现有 firebase js 逻辑完全兼容,旨在替代 web sdk。

    (免责声明:我是 react-native-firebase 的作者)

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2017-07-18
      相关资源
      最近更新 更多