2017-04-22 70 views
4

我真的想通過利用本地安裝firebase-server來編寫一些集成測試,它將模仿實時數據庫服務器。如何通過Swift連接到本地Firebase服務器?

我有installed並從CLI開始吧: node_modules/.bin/firebase-server -p 5000

但我通過SWIFT連接到它的麻煩。 按照Firebase文檔,需要下載項目中的利用GoogleService-Info.plist。這顯然必須改變,因爲我想連接到本地服務器。

這就是我現在所擁有的在AppDelegate.swift

var firebaseConfig: String! 
     if isRunningTests() { 
      // unit test server (idealy local) 
      firebaseConfig = Bundle.main.path(forResource: "GoogleService-Info-tests", ofType: "plist") 
     } else { 
      #if DEBUG 
       // staging server 
       firebaseConfig = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist") 
      #else 
       // production server 
       firebaseConfig = Bundle.main.path(forResource: "GoogleService-Info-prod", ofType: "plist") 
      #endif 
     } 

     guard let options = FIROptions(contentsOfFile: firebaseConfig) else { 
      fatalError("Invalid Firebase configuration file.") 
     } 

     FIRApp.configure(with: options) 
     FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
     FIRDatabase.database().persistenceEnabled = true 

這意味着單元測試我加載GoogleService-Info-tests plist,以連接到遠程測試數據庫。我怎麼能連接到ws://test.firebase.localhost:5000?我不清楚options中的哪些變量是強制性的,需要提供。

+0

github上的相關問題:https://github.com/urish/firebase-server/issues/85 – urish

回答

1

您可以使用FIROptions init!(googleAppID: String!, bundleID: String!, gcmSenderID GCMSenderID: String!, apiKey APIKey: String!, clientID: String!, trackingID: String!, androidClientID: String!, databaseURL: String!, storageBucket: String!, deepLinkURLScheme: String!)方法,並從AppId,bundleId,SenderID傳入一個真實應用程序,然後傳遞databaseURL,它可以是本地URL。你應該能夠通過nil到其他人,並罰款(雖然你可能不得不沉默編譯器警告,因爲他們似乎被標記爲不可空的Swift)。

或者您可以更改GoogleService-Info-tests.plist中的一個字段以指向新的數據庫。

+0

感謝Mike。它通常工作,但通常我會在詳細模式下看到消息「firebase-server發送失敗:錯誤:未打開+ 0ms」。通常'observeSingleEvent()'不能可靠地工作。 – Houman

+0

我會在該項目的問題跟蹤器(https://github.com/urish/firebase-server)中提出一個錯誤,因爲它聽起來像是一個問題,而不是Firebase本身。請注意,'firebase-server'是一個開源項目,不受Firebase支持。 –

+0

當然。謝謝,會做的。 – Houman