【发布时间】:2017-04-19 22:33:42
【问题描述】:
在我的应用程序中,我想找出之前会话中任何崩溃的确切时间,通过 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。因此,在内存不足终止后将永远不会调用此回调。你是对的,他们很难做到。我们是这样做的:docs.fabric.io/apple/crashlytics/OOMs.html
标签: ios objective-c crashlytics twitter-fabric