У меня есть один проект, но с 4 различными средами (Dev, Stagging, QA, Production).Я дал их (URL-адрес веб-службы среды) из настроек мобильного телефона.Теперь я хочу использовать разные GoogleService-info.plist для всех этих разных сред.Например, когда я выбираю Dev из серверной части, проект должен брать только GoogleService-Info.plist из проекта Dev.Эти списки GoogleService-Info.plists созданы на 4 разных аккаунтах.Проект должен пройти путь GoogleService-info.plist программно.Я попробовал следующий код
1] Используя ссылку из этого url, я создал две папки Dev и QA (на данный момент) и попытался указать их пути программно
#if DEV
print("[FIREBASE] Development mode.")
filePath = Bundle.main.path(forResource: "GoogleService-Info",
ofType: "plist", inDirectory: "Dev")
#elseif QA
print("[FIREBASE] QA mode.")
filePath = Bundle.main.path(forResource: "GoogleService-Info",
ofType: "plist", inDirectory: "QA")
#endif
let options = FirebaseOptions.init(contentsOfFile: filePath)!
FirebaseApp.configure(options: options)
Но выдает ошибку
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
на
let options = FirebaseOptions.init(contentsOfFile: filePath)!
этой строке
2] Во-вторых, я изменил имя GoogleService-Info.plistот GoogleService-Info-QA.plist и пытался получить доступ к этому файлу программно
private func configureFirebase() {
guard let plistPath = Bundle.main.path(forResource:
"GoogleService-Info-QA", ofType: "plist"),
let options = FirebaseOptions(contentsOfFile: plistPath)
else { return }
FirebaseApp.configure(options: options)
}
Но выдает ошибку
Terminating app due to uncaught exception 'FIRAppNotConfigured',
reason: 'Failed to get default Firebase Database instance. Must
call `[FIRApp configure]` (`FirebaseApp.configure()` in Swift)
before using Firebase Database.