首页 > 解决方案 > Firebase Firestore 在同一个应用中使用两个不同的实例

问题描述

我目前正在 iOS 应用程序中使用 Firebase Firestore。有一个法律用例,用户必须先接受同意,然后我才能将他们的数据上传到 Firebase,但我需要让用户已经可以保存数据,即使他们尚未同意同意。

我的问题是,是否可以在一个 iOS 应用程序中拥有两个不同的 Firestore 数据库实例。一个仅离线存储数据且不同步的实例和一个正在同步的实例。然后我可以在运行时决定在哪里存储数据。

有这方面的文件或经验吗?

标签: iosswiftfirebasegoogle-cloud-firestore

解决方案


绝对可以在单个应用程序中访问多个 Firestore 数据库(或其他 Firebase 资源)。但只有其中一个可以从GoogleService-Info.plist. 您必须根据辅助文件中的信息从代码中初始化其他的GoogleService-Info.plist

基本方法是首先使用FirebaseOptions第二个项目的配置数据创建一个对象:

// Configure with manual options.
let secondaryOptions = FirebaseOptions(googleAppID: "1:27992087142:ios:2a4732a34787067a", gcmSenderID: "27992087142")
secondaryOptions.bundleID = "com.google.firebase.devrel.FiroptionConfiguration"
secondaryOptions.apiKey = "AIzaSyBicqfAZPvMgC7NZkjayUEsrepxuXzZDsk"
secondaryOptions.clientID = "27992087142-ola6qe637ulk8780vl8mo5vogegkm23n.apps.googleusercontent.com"
secondaryOptions.databaseURL = "https://myproject.firebaseio.com"
secondaryOptions.storageBucket = "myproject.appspot.com"

然后使用它来初始化辅助App对象以获取您需要的 Firebase 服务:

// Configure an alternative FIRApp.
FirebaseApp.configure(name: "secondary", options: secondaryOptions)

// Retrieve a previous created named app.
guard let secondary = FirebaseApp.app(name: "secondary")
  else { assert(false, "Could not retrieve secondary app") }

let secondaryDb = Firestore.firestore(app: secondary)

另见:


推荐阅读