在我的应用程序中,我想查找从前一个会话中发生崩溃的确切时间,通过Crashlytics
报告。我设立Crashlytics
这样:在Crashlytics中查找确切的崩溃时间
- (void) setUpCrashlytics
{
[[Fabric sharedSDK] setDebug:YES];
[CrashlyticsKit setDebugMode:YES];
[CrashlyticsKit setDelegate:self];
[Fabric with:@[[Crashlytics class]]];
}
我按一个按钮模拟的应用程序崩溃,应用后几分钟内启动:
[CrashlyticsKit crash];
我试图让最后一次会议时坠毁使用CrashlyticsDelegate
:
#pragma mark - CrashlyticsDelegate Methods
- (void) crashlyticsDidDetectReportForLastExecution:(CLSReport *) report completionHandler:(void (^)(BOOL)) completionHandler
{
BOOL isCrash = report.isCrash; //this is TRUE
NSDate *crashDate = report.crashedOnDate;
NSDate *reportCreation = report.dateCreated;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
completionHandler(YES);
}];
}
但不幸的是,这两个日期都显示不死机时间,但最后一个会话启动时间。有任何想法吗?谢谢。
您是否检查过“isCrash”是真的?有没有回溯?报告也会生成所谓的“内存不足”错误。 “所谓”,因为我不相信Crashlytics准确地检测到这100%(他们很难检测到)。某些类型的背景终端(特别是后台OoM)从不让程序运行代码,所以Crashlytics不能存储崩溃时间。通过故意强制崩溃来测试这个,看看'crashedOnDate'是否符合你的期望。 –
Crashlytics的Matt在这里 - 我们不会通过这种机制在iOS上检测到OOM。因此,在内存不足终止后,此回调将永远不会被调用。 你是对的,他们很难做到。以下是我们的做法:https://docs.fabric.io/apple/crashlytics/OOMs.html – Matt