PerformFetchWithCompletionHandler called twice when simulating with Xcode
I got around this issue by declaring a static boolean in the App Delegate, and then using the boolean to get the background fetch to perform once
if (!runOnce){ [submission startSubmissionProcessWithCompletetionHandler:^(UIBackgroundFetchResult result){ NSDate *fetchStart = [NSDate date]; completionHandler(result); NSDate *fetchEnd = [NSDate date]; NSTimeInterval timeElapsed = [fetchEnd timeIntervalSinceDate:fetchStart]; NSLog(@"Background Fetch Duration: %f seconds", timeElapsed); }]; runOnce = YES;}else{ completionHandler(UIBackgroundFetchResultNoData); runOnce = NO;}