Тестирующее устройство: iPhone 5 (iOS 7)
У меня есть приложение, которое использует RegionMonitoring
и updateLocation
. Если введен регион, didEnterRegion
вызывается как положено. Затем я звоню startUpdatingLocation
. Но метод didUpdateToLocation
вызывается только 10-20 раз, в то время как он должен обновлять местоположение, пока не сработает таймер.
Соответствующий код:
CLLocationManager *_locationManager;
NSTimer *_timer;
-(void)initLocationManager
{
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
[_locationManager setActivityType:CLActivityTypeOther];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
[_locationManager setPausesLocationUpdatesAutomatically:NO];
[_locationManager setDistanceFilter:kCLDistanceFilterNone];
}
//Did Enter Region, called as expected:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
[_locationManager startUpdatingLocation];
_timer = [NSTimer scheduledTimerWithTimeInterval:300.0f target:self selector:@selector(scheduleMethod:) userInfo:nil repeats:NO];
}
//Timer Fire Method:
- (void) scheduleMethod:(NSTimer*)timer
{
[Utils writeToLog:@"Timer-Stop"];
[_locationManager stopUpdatingLocation];
}
//This Method only called 10-20 Times (in the first 10-20 Seconds) and not the complete 5 Minutes:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[Utils writeToLog:@"LocationUpdate!"];
}
До сих пор я пытался: Перезапустить обновления в методе locationManagerDidPauseLocationUpdates
, но кажется, что это никогда не будет называться:
-(void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager
{
[WRUtils writeToLog:@"LocationUpdate paused, restarted"];
[_locationManager startUpdatingLocation];
}
Проверьте наличие ошибок в методе didFailWithError
, но это также не вызывается. И поиграл немного со свойствами:
[_locationManager setActivityType:CLActivityTypeOther];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
[_locationManager setPausesLocationUpdatesAutomatically:NO];
Настройки Plist верны, я думаю: Требуемые режимы фона ДА Требуемые режимы фона Элемент 0 Приложение регистрирует обновления местоположения
Как я могу решить эту проблему?