对于我的项目,我有2个环境:
和2个本地化:
以及每个组合的应用:(这些名称不会反映Firebase项目ID)
我为项目中的每个应用创建了一个单独的plist文件,名称为Firebase-(app_type).plist
,即Firebase-test_en.plist
或Firebase-prod_en.plist
我正在使用这种方式初始化FIRApp
:
private func ensureLoaded() {
let options = FIROptions(contentsOfFile: Bundle.main
.path(forResource: "Firebase-\(firebaseApplicationName)", ofType: "plist"))!
if nil == FIRApp(named: firebaseApplicationName) {
FIRApp.configure(withName: firebaseApplicationName, options: options)
}
}
它似乎工作正常,直到我尝试实际连接到firebase数据库,它说:
Firebase配置不正确,请拨打[FIRApp配置]
所以我的问题是,如何让firebase在我想要动态更改配置的地方工作?还有一些其他问题描述了如何根据一些环境变量/编译器标志更改配置,但它们都指的是更改plist
文件,这会在构建期间更改配置,但我想在运行期间动态更改它运行。它是否得到支持,有没有办法让它发挥作用?
提前致谢。
答案 0 :(得分:1)
我发现问题是什么,我们在应用程序的某个地方使用FIRApp.auth().currentUser
,它返回“默认”应用程序的身份验证,因为我们有多个配置,我们没有“默认”应用程序的概念,所以配置不完整。我将其更改为FIRAuth(app: myApp)?.currentUser
,现在按预期工作。