Майк из Fabric здесь, есть два метода, которые могут быть использованы, чтобы узнать о произошедшем сбое.
1) - (void)crashlyticsDidDetectReportForLastExecution:(CLSReport *)report;
Этот метод имеет следующие ограничения:
- Он не вызывается синхронно при инициализации
- Он не даетВы можете запретить отправку отчета
- Сам объект отчета является неизменным
Наиболее важные преимущества заключаются в том, что на способность сообщать о сбоях это никак не влияет.
2) - (void)crashlyticsDidDetectReportForLastExecution:(CLSReport *)report completionHandler:(void (^)(BOOL submit))completionHandler;
- Вызывается синхронно, когда последнее выполнение приложения заканчивалось сбоем.
- Затем вы можете предпринять любое действие, которое вы хотите предпринять, но отчет не будет отправлен, пока не будет вызван
completionHandler
с переданным YES
. Если передано NO
, вызов будетзакончен, но отчет не будет отправлен.
Вот пример реализации из документов:
- (void)crashlyticsDidDetectReportForLastExecution:(CLSReport *)report completionHandler:(void (^)(BOOL))completionHandler {
// Use this opportunity to take synchronous action on a crash. See Crashlytics.h for
// details and implications.
// Maybe consult NSUserDefaults or show a UI prompt.
// But, make ABSOLUTELY SURE you invoke completionHandler, as the SDK
// will not submit the report until you do. You can do this from any
// thread, but that's optional. If you want, you can just call the
// completionHandler and return.
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
completionHandler(YES);
}];
}
Я думаю, что это решает вопрос, но дайте мне знать, если я что-то пропустил.