4

アプリでユーザーの位置を追跡しており、最初の位置の更新を受け取ったときに更新を停止しています。アイデアは、実際にユーザーの動きを追跡するのではなく、ユーザーの場所の「スナップショット」を1回だけ取得することです。

ただし、デバイスとシミュレーターのiOS 5.1では、画面の右上にある位置情報サービスアイコンは、追跡の開始後に消えません。

iOS 5.0(シミュレーターでのみテスト可能)では、アイコンは期待どおりに表示および非表示になります。

iOS 5.1のCoreLocationに影響を与える可能性のあるバグを知っている人はいますか?

他の誰かが非常によく似た報告をしているのを見つけましたが、マルチタスクバーでアプリを強制終了すると、アイコンが削除され、私のものが持続します。これは、アプリがまったく実行されていない場合でも同様です。

また(アプリを終了した後)、設定でロケーションサービスにアクセスすると、アプリが紫色に点灯し、オンとオフを切り替えて、上部のロケーションアイコンを問題なく切り替えることができます。

この男をチェックしてください:http://bendodson.com/weblog/2012/03/14/ios-5-1-location-services-bug/

4

3 に答える 3

4

消えるまでに時間がかかることに気づきました(約10秒)。ビューが消えたら、場所の更新を停止し、デリゲートを nil に設定する必要がある場合があります。

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self isMovingFromParentViewController]) {
        // Popping the view
        NSLog(@"MyViewController isMovingFromParentViewController");
        [locationManager stopUpdatingLocation];
        [locationManager setDelegate:nil];
    }
    [super viewWillDisappear:animated];
}

注:このコードは iOS 5 のみであり、ビューが閉じられて親ビューに戻るときにのみトリガーされます。それに応じて調整します。

余談ですが、新しいかどうかをテストしていない限り、ロケーション マネージャーから返された最初のロケーションに依存するべきではありません。古いキャッシュされた場所が返される場合があります。

于 2012-04-19T16:25:23.973 に答える
2

アイデアは、実際にユーザーの動きを追跡するのではなく、ユーザーの場所の「スナップショット」を一度だけ取得することです。

また、スナップショットを取得したいだけです。通話後

[locationManager stopUpdatingLocation];

iPhone4S - iOS 5.1.1 では、ナビゲーション アイコンはすぐには消えませんが、約 10 秒の遅延があります。さらに、stopUpdatingLocation を呼び出した後に別の位置情報の更新を受信することがあります。

ナビゲーション アイコンを無効にするために、ロケーション マネージャーのデリゲートを nil に設定する必要はありません。

于 2012-06-27T07:08:21.037 に答える