博览会和react-native-firebase

问题描述 投票:0回答:7

我正在尝试使用 react-native-firebase 框架将 Firebase 集成到我的博览会应用程序中,当涉及到反应本机应用程序时,该框架比常规

firebase
包具有多个优势。

但是,我遇到了困难,因为说明说我必须将

GoogleService-Info.plist
添加到
ios/[YOUR APP NAME]/GoogleService-Info.plist
,并且根据我的理解,expo应用程序没有ios文件夹。

我已经完蛋了还是有解决方案?

firebase react-native expo react-native-firebase
7个回答
10
投票

正如react-native-firebase文档所说,如果你想在expo中使用这个库,你需要弹出你的应用程序。请注意,弹出操作是不可逆的。更多信息这里这里这里

如果您使用 Expo 并想使用此套餐,您需要 喷射。如果您不想弹出,但希望使用功能 例如实时数据库(不支持离线)和身份验证, 您仍然可以在项目中使用 Firebase Web SDK。


3
投票

今天,您无法通过 expo 使用 Firebase React-Native sdk。这并不是根据以下计划进行的:https://expo.canny.io/feature-requests/p/full-native-firebase-integration

所以你只能使用 Firebase 的 javascript sdk。

Cloud Firestore 是新的,对于离线和同步的 javascript sdk 来说会更好。


2
投票

此线程的作者:Fresh Detached Expo + RNFirebase not running on Android 已设法使其与

Detached ExpoKit
一起工作 - 因此它不是完全弹出并保留了 expo 功能。

我已询问他采取的步骤,以便我们可以了解如何将某些内容添加到我们的文档中,以及可能是我们的 starter 应用程序的独立 ExpoKit 版本。

有关 ExpoKit 的信息,请参阅 expokit 分离文档


2
投票

正在进行中 --

https://blog.expo.io/using-firebase-in-expo-e13844061832

在 Expo 中使用 Firebase 以及我们计划如何将其添加到客户端 😁 我们非常高兴地宣布,我们将推出一套 Unimodules,让您可以轻松访问原生 Firebase 功能!最初您只能在独立的 ExpoKit 应用程序中使用它们。但随着时间的推移,我们将努力将这些添加到原版博览会中

TL;博士
以下是模块,您现在需要分离才能添加它们

  • 应用程序/核心
  • 分析
  • 认证
  • 云Firestore
  • 云函数
  • 实例ID
  • 性能监视器
  • 实时数据库
  • 云存储
  • 远程配置
  • Firebase 云消息传递
  • 远程通知
  • 动态链接
  • 邀请
  • Crashlytics

还有TL;DR
这是一个样板:https://github.com/EvanBacon/expo-native-firebase


2
投票

更新2021年2月12日

Guys expo 的 eas-build 现已公开。您可以添加自定义本机代码并使用react-native-firebase。这是 youtube 教程的链接。该视频很短并且非常容易理解。这是文档的链接

之前的回答

如果您使用移动配置使用Firebase,则它不起作用,但当我尝试网络配置时,它运行顺利。这是 youtube 教程。从

38:20
观看进行设置。


1
投票

我设法获得了一套包含 redux、firestore 和 expo 的 React-Native 工作集。请参阅Github上的代码示例

但是它会消耗离线持久性(请参阅https://github.com/firebase/firebase-js-sdk/issues/436)。因此,从我的角度来看,它会影响性能,因为我需要在线才能获得带有 firestore 和 react-native 的完整工作应用程序。


0
投票

我已经成功添加了react-native-firebase包与expo,以下是步骤:

  1. 使用空白模板创建了新的博览会应用程序。
  2. 安装了react native firebase包和firestore(因为我需要使用firestore):

npx expo install @react-native-firebase/app @react-native-firebase/firestore

  1. 已安装expo开发客户端:

npx expo install expo-dev-client

  1. 然后执行android命令:

    npx expo run:android

  2. 我已经在google firebase控制台中创建了android和ios应用程序,并下载了google-services.json文件和GoogleService-Info.plist文件并将它们添加到我的项目的根目录中。

  3. 配置了app.json,ios和android属性如下所示:

     "ios": {
       "supportsTablet": true,
       "bundleIdentifier": "....",
       "googleServicesFile": "./GoogleService-Info.plist"
     },
     "android": {
       ...
       "package": "..",
       "googleServicesFile": "./google-services.json"
     },
     ...
     "plugins": ["@react-native-firebase/app"]
    
  4. 然后在App.js中使用firestore,下面的代码可以参考:

import { initializeApp } from "@react-native-firebase/app";
import { getFirestore } from "@react-native-firebase/firestore";
import { StatusBar } from "expo-status-bar";
import { useEffect, useState } from "react";
import { StyleSheet, Text, View } from "react-native";

const firebaseConfig = {
  apiKey: "..",
  authDomain: "..",
  projectId: "..",
  storageBucket: "..",
  messagingSenderId: "..",
  appId: "..",
  databaseURL: "",
};

const app = initializeApp(firebaseConfig);

export default function App() {
  const [text, setText] = useState("Loading...");
  useEffect(() => {
    const fetchData = async () => {
      try {
        const subscriber = getFirestore(app)
          .collection("Users")
          .doc("Sam")
          .onSnapshot((snapshot) => {
            const firstName = snapshot.data().firstname;
            setText(firstName);
          });
        return () => subscriber();
      } catch (error) {
        console.error("Error fetching data:", error);
      }
    };

    fetchData();
  }, []);

  return (
    <View style={styles.container}>
      <Text>{text}</Text>
      <StatusBar style="auto" />
    </View>
  );
}

供参考,我使用的版本是:

"@react-native-firebase/app": "^21.5.0",

"@react-native-firebase/firestore": "^21.5.0",

"expo": "~52.0.7",

"react": "18.3.1",

"react-native": "0.76.2",
© www.soinside.com 2019 - 2024. All rights reserved.