[Crashlytics] Enable much earlier sending reports

Sending reports is now handled synchronously on the startup path, so
that unsent reports can be sent before a startup crash causes further
crashes to occur. This is apparently needed to help one particular user
catch whatever is causing the app to crash for them.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
swiftingly
Christopher Snowhill 2022-06-17 15:43:12 -07:00
parent 0931686a78
commit 9cc5ba7c0e
1 changed files with 20 additions and 0 deletions

View File

@ -146,6 +146,26 @@ void *kAppControllerContext = &kAppControllerContext;
[[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"NSApplicationCrashOnExceptions": @(YES) }]; [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"NSApplicationCrashOnExceptions": @(YES) }];
[FIRApp configure]; [FIRApp configure];
/* Evil startup synchronous crash log submitter, because apparently, there
* are some startup crashes that need diagnosing, and they're not getting
* sent, because the asynchronous defaults are not kicking in before the
* ensuing startup crash that happens somewhere later in this function. */
__block BOOL submitCompleted = NO;
ALog(@"Checking for unsent reports...");
[[FIRCrashlytics crashlytics] checkForUnsentReportsWithCompletion:^(BOOL hasReports) {
if(hasReports) {
ALog(@"Unsent reports found, sending...");
[[FIRCrashlytics crashlytics] sendUnsentReports];
ALog(@"Reports sent, continuing...");
} else {
ALog(@"No reports found, continuing...");
}
submitCompleted = YES;
}];
while(!submitCompleted) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];
}
#ifdef DEBUG #ifdef DEBUG
// Prevent updates automatically in debug builds // Prevent updates automatically in debug builds
[updater setAutomaticallyChecksForUpdates:NO]; [updater setAutomaticallyChecksForUpdates:NO];