在 iOS 上运行时更改 Firebase 配置

aka*_*lar 9 ios firebase

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

  • 测试
  • 产品

和 2 个本地化:

  • tr

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

  • test_cn
  • test_tr
  • prod_en
  • prod_tr

我为项目中的每个应用程序都有一个单独的 plist 文件,名称为Firebase-(app_type).plistieFirebase-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)
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,直到我尝试实际连接到 firebase 数据库,它说:

Firebase 配置不正确,请调用【FIRApp 配置】

所以我的问题是,如何让 firebase 在我想要动态更改配置的地方工作?还有一些其他问题描述了如何根据一些环境变量/编译器标志更改配置,但它们都是指更改plist文件,这会在构建时更改配置,但我想在运行时动态更改它。它是否完全受支持,有没有办法让它工作?

提前致谢。

aka*_*lar 3

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

  • 接得好!请记住,这同样适用于“FIRDatabase”。您需要使用“FIRDatabase.database(app:)”类方法来获取有效的实例。快乐黑客! (2认同)