Ответ 1
Основываясь на том, что указано rckoenes, приложениям разрешено регистрировать фоновые задачи, которые должны быть выполнены после того, как пользователь нажимает кнопку "домой". Срок выполнения этих задач составляет 10 или 15 минут. Опять же, вы можете зарегистрировать задачу для завершения сразу после того, как пользователь наносит ответный удар домой, это НЕ позволяет выполнять код через час после выхода из приложения.
UIApplication* app = [UIApplication sharedApplication];
task = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:task];
task = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task.
NSLog(@"Started background task timeremaining = %f", [app backgroundTimeRemaining]);
if (connectedToNetwork) {
// do work son...
}
[app endBackgroundTask:task];
task = UIBackgroundTaskInvalid;
});
ОБНОВЛЕНИЕ: если ваше приложение поддерживает версии iOS, предшествующие iOS 4, вы также должны проверить, поддерживает ли многозадачность до регистрации фоновой задачи. Используйте что-то по строкам:
UIDevice* device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
backgroundSupported = device.multitaskingSupported;