iPhone デバイス以外のすべて (シミュレーターと iPad デバイス) で位置情報の更新を受け取ることができます。
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
self.locationManager.pausesLocationUpdatesAutomatically = NO;
self.locationManager.delegate = self;
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *newLocation = locations.lastObject;
NSLog(@"didUpdateLocations newLocation = %@", newLocation);
.
.
}
アプリがフォアグラウンドにある限りdidUpdateLocations (NSLog メッセージ)を受け取りますが、ホーム ボタンを押した後 (つまり、アプリがバックグラウンドになる)、didUpdateLocations での通知の受信を停止します。「コンソール」に NSLog メッセージが表示されず、その後、ステータス バーの場所アイコンも 10 秒以内に消えます。
機能するものと機能しないもの -
私の他の iPhone 3gs にインストールされた iOS 6 は正常に動作するようです。小さな場所のアイコンが消えません。
iOS 7 を搭載した iPad デバイスでテストすると、アプリはバックグラウンドで実行され続けます。
iOS 6 および iOS 7 を搭載したすべてのシミュレーター (iPhone および iPad) は期待どおりに動作します。
iOS 7 を搭載した iPhone 4 でテストすると、アプリはバックグラウンドで実行されません。おそらく、この問題は iOS 7 (および一部の特定の iPhone デバイス) にのみ発生します。