バックグラウンドでiPhoneの重力を毎秒チェックするアプリがあります。Xcode に接続しているときにこのコードを実行すると、プログラムがバックグラウンドで 30 分以上実行されます。ただし、Xcode に接続されていない場合は、バックグラウンドで 10 分が経過する前に実行を停止します。位置情報の更新とモーションの更新を使用します。
- (void)applicationDidEnterBackground:(UIApplication *)application {
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
bgTask = UIBackgroundTaskInvalid;
NSLog(@"End Background Tasks");
}];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
[locationManager requestAlwaysAuthorization];
}
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
locationManager.allowsBackgroundLocationUpdates = YES;
}
[locationManager startUpdatingLocation];
[self.motionManager startDeviceMotionUpdates];
}