2016-06-08 67 views
1

由於我升級到新的Firebase,我的應用程序無法從低速互聯網連接開始。當它有一個很好的連接,並且它沒有任何連接時,它就會執行。我認爲我已經正確地設置了一切,因爲如果我在設置上犯了錯誤,它根本無法工作。帶有Firebase的iOS應用程序不以低速互聯網連接開始

這裏是我的AppDelegate代碼:

import UIKit 
import Firebase 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(application: UIApplication, didFinishLaunchingWithOptionslaunchOptions: [NSObject: AnyObject]?) -> Bool { 

     UITabBar.appearance().tintColor = UIColor.redColor() 

     FIRApp.configure() 
     FIRDatabase.database().persistenceEnabled = true 

     return true 
    } 

} 
+0

你是什麼意思的「不開始」?你會得到什麼錯誤信息?另外,你是否運行時間分析器儀器,或者在懸掛時查看堆棧截圖以查看滯留量是多少? –

+0

我的意思是說,如果我用慢的網絡連接啓動它,應用程序就會崩潰,但當它連接到計算機時不會啓動它。所以我甚至沒有收到錯誤信息。而且我還沒有使用過定時器分析器,因爲我不知道它是如何工作的。 –

+0

如果應用程序崩潰,那麼設備上會出現崩潰日誌,並顯示錯誤消息。您也可以使用Network Link Conditioner在您的計算機上模擬緩慢的互聯網 –

回答

2

iOS版包括一個稱爲看門狗機制,這將終止失敗在一定時間窗口來啓動任何應用程序。您在application(_:didFinishLaunchingWithOptions:)中執行的任何阻止任務都有可能導致您的應用被終止,如果時間過長。你應該考慮異步執行這些任務。

您可以在代碼中放置斷點或打印語句,以確定哪一行耗時過長。

+0

但是我需要的是在應用程序中耗時這麼久的方法(_:didFinishLaunchingWithOptions :)。該應用程序將無法正常工作。我怎樣才能使該方法執行? –

+0

您不需要_need_在'application(_:didFinishLaunchingWithOptions:)'中有這些方法調用。你總是可以將它們推遲到稍後的一點;您只需延遲使用他們在您的應用中設置的內容,直到完成延期工作(即提供某種加載UI)。無論如何,我很難推測爲什麼這些方法需要很長時間,但這是一個不同的問題。 –

相關問題