startMonitoringSignificantLocationChanges никогда не получает местоположение на iOS8

У меня проблема с startMonitoringSignificantLocationChanges в iOS 8

При использовании следующего кода мое физическое устройство и симулятор iOS 8 никогда не использовали метод didUpdateLocations:

 -(void)viewDidLoad {
        if (self.locationManager==nil) { self.locationManager = [[CLLocationManager alloc] init]; }
        self.locationManager.activityType = CLActivityTypeFitness;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
        self.locationManager.delegate = self;
        if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
            NSLog(@“requestAlwaysAuthorization”);
            [self.locationManager requestAlwaysAuthorization];
        }
        [self.locationManager startMonitoringSignificantLocationChanges];

    }

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
        NSLog(“didUpdateLocation”);
    }

Если я заменю startMonitoringSignificantLocationChanges на startUpdatingLocation, физическое устройство получит одно обновление (чего я не ожидал), но симулятор продолжит получать постоянные обновления (это то, что я ожидал, но не то, что я хочу).

Буду очень признателен за любые идеи о том, как это исправить. Я также предпочел бы использовать requestWhenInUseAuthorization вместо requestAlwaysAuthorization, но я читал в другом месте, что если я хочу использовать startMonitoringSignificantLocationChanges, мне нужно использовать requestAlwaysAuthorization.


person Chris    schedule 16.10.2014    source источник


Ответы (1)


Вы должны определить строку описания в файле plist для ключа NSLocationAlwaysUsageDescription.

<key>NSLocationAlwaysUsageDescription</key>
<string>With this mode, you will never miss location updates!</string>
person VaporwareWolf    schedule 17.10.2014
comment
У меня был NSLocationWhenInUseUsageDescription, но я не знал, что есть отдельный ключ NSLocationAlwaysUsageDescription. Спасибо. - person Chris; 17.10.2014