Firebase Firestore использует два разных экземпляра в одном приложении - PullRequest
0 голосов
/ 11 февраля 2020

В настоящее время я работаю с Firebase Firestore в приложении iOS. Существует законный вариант использования, когда пользователи должны сначала принять согласие, прежде чем мне разрешат загружать их данные в Firebase, но у меня есть необходимость разрешить пользователям уже сохранять данные, даже если они еще не согласились с согласием.

Мой вопрос: возможно ли иметь два разных экземпляра базы данных Firestore в одном приложении iOS. Один экземпляр, который хранит данные только в автономном режиме и не синхронизирует c, и тот, который синхронизируется. Затем я могу решить во время выполнения, где хранить данные.

Есть ли документация или опыт для этого?

1 Ответ

1 голос
/ 11 февраля 2020

Определенно возможно получить доступ к нескольким базам данных Firestore (или другим ресурсам Firebase) в одном приложении. Но только один из них может быть инициализирован из GoogleService-Info.plist. Другой (ие) вам придется инициализировать из своего кода, основываясь на информации из вторичного GoogleService-Info.plist.

Основной подход c для этого состоит в том, чтобы сначала создать 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)

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...