1

私はこれを使用していますが、iosの最大リージョン数を監視できるため、20を超えるリージョンを監視する方法がわかりません

if ([AllRegionsArray count] > 0) {


    for (int i = 0; i < [AllRegionsArray count]; i++) {
        NSArray *LongLati = [AllRegionsArray objectAtIndex:i];
        lutiuid = [LongLati objectAtIndex:0];
        Longtuid = [LongLati objectAtIndex:1];

        CLLocationCoordinate2D centreLoc = {[lutiuid floatValue], [Longtuid floatValue]};
        CLLocationDistance regionRadius = 150.00;
        CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:centreLoc radius:regionRadius identifier:[NSString stringWithFormat:@"grRegion%i",i]];

        [locationManager startMonitoringForRegion:grRegion desiredAccuracy:acc];

        NSLog(@"Mon = %i , %i",[locationManager.monitoredRegions count],i);

    }


}
4

1 に答える 1

2

20 を超えるリージョンを監視することはできません。ユーザーの場所に応じて一部のリージョンの監視を停止し、他のリージョンを開始することもできます (ユースケースによって異なります)。

説明 監視する地域ごとに、このメソッドを 1 回呼び出す必要があります。同じ識別子を持つ既存のリージョンがアプリケーションによってすでに監視されている場合、古いリージョンは新しいリージョンに置き換えられます。このメソッドを使用して追加したリージョンは、アプリケーション内のすべてのロケーション マネージャー オブジェクトによって共有され、monitoredRegions プロパティに格納されます。

リージョン イベントは、デリゲートの locationManager:didEnterRegion: および locationManager:didExitRegion: メソッドに配信されます。エラーが発生した場合、ロケーション マネージャーは代わりにデリゲートの locationManager:monitoringDidFailForRegion:withError: メソッドを呼び出します。

アプリは一度に最大 20 のリージョンを登録できます。地域の変更をタイムリーに報告するために、地域監視サービスにはネットワーク接続が必要です。

iOS 6 では、半径 1 ~ 400 メートルの領域が iPhone 4S 以降のデバイスでより適切に機能します。(iOS 5 では、半径 1 ~ 150 メートルの領域は、iPhone 4S 以降のデバイスでより適切に機能します。) これらのデバイスでは、アプリは適切な領域に入った、または領域から出たという通知を平均で 3 ~ 5 分以内に受け取ることが期待できます。早くなければ。

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instm/CLLocationManager/startMonitoringForRegion :

于 2014-01-20T14:45:27.167 に答える