Firebase& CrashlyticsDelegate

时间:2017-12-22 16:12:25

标签: ios firebase crashlytics

我想检测上次会话是否崩溃,以便我可以尝试恢复。

我在应用程序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()

Tho,“FOUND CRASH”永远不会被打印出来......

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

乍一看你的代码看起来不错。你在哪里打电话Crashlytics.sharedInstance().crash()?如果它在应用程序委托中,可能它没有注册,因为应用程序委托尚未完成设置firebase / crashlytics。您应该在代码中可能发生崩溃的位置使用Crashlytics.sharedInstance().crash(),例如force-unwrappingdo-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()
    }
}