diff --git a/Classes/BITHockeyHelper.m b/Classes/BITHockeyHelper.m index 796fc801fe..5383c7991c 100644 --- a/Classes/BITHockeyHelper.m +++ b/Classes/BITHockeyHelper.m @@ -159,13 +159,18 @@ void bit_fixBackupAttributeForURL(NSURL *directoryURL) { } if (directoryURL) { - NSError *getResourceError = nil; - NSNumber *appSupportDirExcludedValue; - - if ([directoryURL getResourceValue:&appSupportDirExcludedValue forKey:NSURLIsExcludedFromBackupKey error:&getResourceError] && appSupportDirExcludedValue) { - NSError *setResourceError = nil; - [directoryURL setResourceValue:@NO forKey:NSURLIsExcludedFromBackupKey error:&setResourceError]; - } + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSError *getResourceError = nil; + NSNumber *appSupportDirExcludedValue; + if ([directoryURL getResourceValue:&appSupportDirExcludedValue forKey:NSURLIsExcludedFromBackupKey error:&getResourceError] && appSupportDirExcludedValue) { + NSError *setResourceError = nil; + if(![directoryURL setResourceValue:@NO forKey:NSURLIsExcludedFromBackupKey error:&setResourceError]) { + BITHockeyLogError(@"ERROR: Error while setting resource value: %@", setResourceError.localizedDescription); + } + } else { + BITHockeyLogError(@"ERROR: Error while retrieving resource value: %@", getResourceError.localizedDescription); + } + }); } } diff --git a/Support/HockeySDKTests/BITHockeyHelperTests.m b/Support/HockeySDKTests/BITHockeyHelperTests.m index 5679ef522f..9b05407494 100644 --- a/Support/HockeySDKTests/BITHockeyHelperTests.m +++ b/Support/HockeySDKTests/BITHockeyHelperTests.m @@ -307,15 +307,20 @@ } - (BOOL)excludeAttributeIsSetForURL:(NSURL *)directoryURL { - - NSError *getResourceError = nil; - NSNumber *appSupportDirExcludedValue; - if ([directoryURL getResourceValue:&appSupportDirExcludedValue forKey:NSURLIsExcludedFromBackupKey error:&getResourceError] && appSupportDirExcludedValue) { - if ([appSupportDirExcludedValue isEqualToValue:@YES]) { - return YES; + __block BOOL result = NO; + XCTestExpectation *expectation = [self expectationWithDescription:@"wait"]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSError *getResourceError = nil; + NSNumber *appSupportDirExcludedValue; + if ([directoryURL getResourceValue:&appSupportDirExcludedValue forKey:NSURLIsExcludedFromBackupKey error:&getResourceError] && appSupportDirExcludedValue) { + if ([appSupportDirExcludedValue isEqualToValue:@YES]) { + result = YES; + } } - } - return NO; + [expectation fulfill]; + }); + [self waitForExpectationsWithTimeout:5 handler:nil]; + return result; } @end