Вы можете проверить, поддерживает ли текущая iOS возврат текущего состояния приложения, с помощью -respondsToSelector:
if ([[UIApplication sharedApplication] respondsToSelector:@selector(applicationState)] ){
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
}
. Вы можете определить, доступна ли поддержка многозадачности (даже устройства под управлением iOS 4 или новее могут не иметьаппаратное обеспечение для поддержки многозадачности) путем специальной проверки фоновой поддержки:
UIDevice* device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
backgroundSupported = device.multitaskingSupported;
Вы можете получить версию iOS, используя следующий код (хотя на самом деле вы не должны полагаться на следующий код для получения фоновой поддержки):
float osVersion=[[[UIDevice currentDevice] systemVersion] floatValue];
Наконец, если вы хотите выполнить некоторые задачи сразу после входа в фоновый режим, вам нужно воспользоваться следующим событием:
- (void)applicationDidEnterBackground:(UIApplication *)application
.. но обратите внимание, чтоВаше время будет очень ограничено.У вас будет примерно пять секунд, чтобы сделать то, что вы хотите.В случае, если вам нужно больше, вы можете попробовать запросить у iOS дополнительное время:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = 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.
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
Обратите внимание, что в этом случае вам может быть предоставлено больше времени для iOS (или нет), но это все еще ограниченная длина
Apple Выполнение кода в фоновом режиме стоит прочитать.