2017-05-01 40 views
1

我的項目更改火力地堡的配置,我有2個環境:在運行iOS上

  • 測試
  • 督促

和2本地化:

  • 連接
  • tr

和每個組合的應用程序:(這些名稱不反映火力地堡項目IDS)

  • test_en
  • test_tr
  • prod_en
  • prod_tr

而且我有一個項目中每個應用程序的單獨plist文件,名稱爲Firebase-(app_type).plistFirebase-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) 
    } 
} 

而且似乎好的工作,直到我嘗試實際連接到火力數據庫,在那裏說:

火力地堡不配置正確,請致電[FIRApp configure]

所以我的問題是,如何讓firebase工作在我想動態的地方盟友改變配置?還有一些其他問題描述瞭如何根據某些環境變量/編譯器標誌來更改配置,但它們都指的是更改plist文件,這會在編譯期間更改配置,但我想在運行時動態更改它。它是否支持,有沒有辦法讓它工作?

在此先感謝。

+1

超越我爲什麼你被低估了bro :-(這是一個超級有效的Firebase問題 - upvoted! –

+0

它是否在第一次工作(即在切換應用程序之前)? –

+0

不,它不是第一次工作,但我發現了這個錯誤,請看下面的答案。謝謝你的幫助! – akaralar

回答

1

我發現問題所在,我們在應用的某個地方使用FIRApp.auth().currentUser,它返回「默認」應用的身份驗證,由於我們有多個配置,我們沒有「默認」應用的概念,所以配置不完整。我將其更改爲FIRAuth(app: myApp)?.currentUser,現在按預期工作。

+1

好的,請記住,同樣的函數也適用於'FIRDatabase',你需要使用'FIRDatabase.database(app:)'類方法來獲得一個有效的實例。快樂黑客! –

+0

感謝您的提醒! – akaralar

+0

順便說一句,不要忘記接受你自己的答案......但你必須等待48小時這樣做:) –