1

CLLocationManager を使用して iOS のリージョンを監視しています。通常の方法でデリゲートを設定します。

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self; 

次のようないくつかのデリゲート関数を実装します。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
   NSLog(@"GeoFence: didEnterRegion");    
}

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region 
{
    NSLog(@"GeoFence: didExitRegion");    
}

次に、リージョンの監視を開始します。

CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(lat, lng);     
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:coordinates radius:radius identifier:[NSString stringWithFormat:@"grRegion%i", 1]];

CLLocationAccuracy acc = kCLLocationAccuracyNearestTenMeters;
[self.locationManager startMonitoringForRegion:grRegion desiredAccuracy:acc];

lat (51.116261)、lng (-0.85300)、radius (200) の適切な値を使用します。iPhone 5.1 シミュレーターでアプリをビルドして実行した後、Xcode 4.3 のロケーション インジェクション ツールを使用して、離れた場所と目的の場所の間を移動し、再び戻ります。この手順では、didEnterRegion イベントは正しくトリガーされますが、didExitRegion はトリガーされません。didUpdateToLocation などの他のデリゲート コールバックも受け取ります。シミュレートされた動きのパターンを変更し、Xcode ではなくシミュレーターの位置設定ツールを使用し、iOS 5.1 を搭載した iPhone 4S でアプリを実行して同じテストを試みました。すべてのテストで同じ結果が得られます。

他のスレッドで提案されているようにWiFiが有効になっていることを確認し、関連するトピックに関する他の質問を無駄に調べました. 地域遷移イベントの 1 つが発生し、他のイベントが発生しない理由について何か提案はありますか?

4

1 に答える 1

0

5.1でも同じ問題が発生しました。私はバグとしてAppleにレーダーを提出した。最初のイベントをインまたはアウトでトリップしますが、その後は他のイベントをトリップしません。

私が見ることができることから、この問題はiOS6ベータ版で解決されました。そのため、iOS6が公開されたときに解決されるかどうかを確認してください。

レーダー:11715223

于 2012-07-04T01:39:34.687 に答える