使用Crashlytics框架处理崩溃报告时提供了不正确的crashDate

时间:2016-02-15 14:55:40

标签: ios objective-c crashlytics twitter-fabric

我正在使用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框架中的错误还是我不理解的错误。

1 个答案:

答案 0 :(得分:0)

我找到了原因。似乎report.dateCreated返回的不是崩溃日期,而是应用程序会话开始的日期。

这真令人困惑。我猜Crashlytics团队应该以不同的方式命名它,或者至少在接口doc中提及它。