Запустите UpdateLocations в фоновом режиме, didUpdateToLocation вызывается только 10-20 раз

Тестирующее устройство: 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 Приложение регистрирует обновления местоположения

Как я могу решить эту проблему?

8
задан Honey 28 July 2017 в 11:16
поделиться