locationManager: didExitRegion: не вызывается при запуске приложения

У меня есть приложение с менеджером местоположения, которое запускается с startUpdatingLocation. Однако, если он не переместился, я останавливаюUpdatingLocation, помечаю текущее местоположение как регион и startMonitoringForRegion следующим образом:

[locationManager stopUpdatingLocation];

CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:self.currentLocation.coordinate radius:25 identifier:@"last_loc"];

[self.locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters];

[region release];

Когда приложение полностью закрывается и я выхожу из региона, вызывается locationManager: didExitRegion, и я продолжаю свой веселый путь следующим образом:

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{       
    [self.locationManager stopMonitoringForRegion:region];

    [locationManager startUpdatingLocation];
}

Однако, если приложение работает в фоновом или переднем режиме, оно не будет отвечать на locationManager: didExitRegion. Что мне не хватает?


person Brad Stewart    schedule 02.06.2011    source источник
comment
вы тестируете iPhone 4 HW? Только iPhone 4 HW поддерживает отслеживание региона.   -  person timthetoolman    schedule 02.06.2011
comment
@timthetoolman, да, iphone 4.   -  person Brad Stewart    schedule 02.06.2011
comment
вы установили делегата для менеджера местоположения?   -  person timthetoolman    schedule 02.06.2011
comment
@timthetoolman, ага. мне придется вернуться к этому, когда у меня будет больше времени, я думаю.   -  person Brad Stewart    schedule 06.06.2011


Ответы (1)


Обязательно инициализируйте свойство координаты. Если вы хотите, чтобы координаты были текущим местоположением пользователя, используйте [your location manager].location.coordinate.latitude и [your location manager].location.coordinate.longitude в качестве свойств инициализации. Если вам нужна высота, укажите [your location manager].location.altitude, [your location manager].location.horizontalAccuracy, [your location manager].location.verticalAccuracy и [your location manager].location.timeStamp. Без этой информации вы создаете регион, у которого нет координат, но который все еще существует. По сути, у него есть название, но нет реальной информации.

person Luthelis    schedule 30.12.2013