我想检测上次会话是否崩溃,以便我可以尝试恢复。
我在应用程序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”永远不会被打印出来......
任何人都知道我做错了什么?
答案 0 :(得分: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()
}
}