我正在使用Crashlytics
框架作为iOS app中的崩溃处理程序。
我需要将崩溃的信息发送到我的服务器并执行此操作我实现了名为
的[Crashlytics sharedInstance]
方法的委托
它提供了在应用程序启动时处理崩溃报告的方法,以决定是否应该发送崩溃报告。以下是这种方法的最简单实现:
- (void)crashlyticsDidDetectReportForLastExecution:(CLSReport *)report completionHandler:(void (^)(BOOL))completionHandler {
NSDate *crashDate = report.dateCreated;
//Do the logic
completionHandler(YES);
}
为了测试一切是否按预期工作,我使用这些线模拟了崩溃
{
...
NSDate *realCrashDate = [NSDate date];
[[Crashlytics sharedInstance] crash];
}
然后我注意到我在崩溃前在日志中打印的realCrashDate
与存储在crashDate
实例中的CLSReport
不同。
差异甚至更怪,因为crashDate
早于realCrashDate
。
真实的例子是:
realCrashDate = 2016-02-15 14:36:21 +0000
crashDate = 2016-02-15 14:36:01 +0000
它是Crashlytics
框架中的错误还是我不理解的错误。
答案 0 :(得分:0)
我找到了原因。似乎report.dateCreated
返回的不是崩溃日期,而是应用程序会话开始的日期。
这真令人困惑。我猜Crashlytics团队应该以不同的方式命名它,或者至少在接口doc中提及它。