を使用して、現在の 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
..しかし、あなたの時間は非常に限られていることに注意してください。やりたいことをするのに約5秒かかります。さらに時間が必要な場合は、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 のExecuting Code in the Backgroundは読む価値があります。