Основываясь на том, что заявили 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;