在iOS

时间:2017-05-01 11:42:54

标签: ios firebase

对于我的项目,我有2个环境:

  • 测试

和2个本地化:

  • EN
  • tr

以及每个组合的应用:(这些名称不会反映Firebase项目ID)

  • test_en
  • test_tr
  • prod_en
  • prod_tr

我为项目中的每个应用创建了一个单独的plist文件,名称为Firebase-(app_type).plist,即Firebase-test_en.plistFirebase-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文件,这会在构建期间更改配置,但我想在运行期间动态更改它运行。它是否得到支持,有没有办法让它发挥作用?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我发现问题是什么,我们在应用程序的某个地方使用FIRApp.auth().currentUser,它返回“默认”应用程序的身份验证,因为我们有多个配置,我们没有“默认”应用程序的概念,所以配置不完整。我将其更改为FIRAuth(app: myApp)?.currentUser,现在按预期工作。