2017-12-22 6 views
0

私は回復を試みるために最後のセッションがクラッシュしたかどうかを検出したいと思います。 Firebase&CrashlyticsDelegate

は、私は、アプリケーションのdidFinishLaunchingWithOptionsでこのようCrashlyticsDelegateセットアップを得た:

Crashlytics.sharedInstance().delegate = self 
FirebaseApp.configure() 

(CrashlyticsはFirebaseによって初期化される)

これは私が使用しているデリゲートメソッドです:

func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) { 
    print("FOUND CRASH") 
    PXNAssistant.shared.recoverCrash() 
    completionHandler(true) 
} 

それから私はこれをクラッシュを強制するように呼びます:

Crashlytics.sharedInstance().crash() 

カントー、「FOUND CRASH」は印刷されることは決してありません...

誰もが私が間違ってやっている任意のアイデアがありますか?

答えて

1

一見したところでコードが正常に見えます。どこにCrashlytics.sharedInstance().crash()と呼んでいますか?それがアプリデリゲートにあれば、アプリデリゲートがfirebase/crashlyticsの設定を完了していないため、登録していない可能性があります。 Crashlytics.sharedInstance().crash()を、コード内で、たとえば、force-unwrappingまたはdo-try-catchブロックのようなクラッシュが発生する場所で使用する必要があります。あなたのプロジェクトにFirebaseのサンプルコードを実装しようとしましたか?

import UIKit 
import Crashlytics 

class ViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view, typically from a nib. 

     let button = UIButton(type: .roundedRect) 
     button.frame = CGRect(x: 20, y: 50, width: 100, height: 30) 
     button.setTitle("Crash", for: []) 
     button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside) 
     view.addSubview(button) 
    } 

    @IBAction func crashButtonTapped(_ sender: AnyObject) { 
     Crashlytics.sharedInstance().crash() 
    } 
}