Почему requestWhenInUseAuthorization не запрашивает у пользователя доступ к местоположению?

В моем методе viewDidLoad меня есть

locationManager = [[CLLocationManager alloc]init]; // initializing locationManager
locationManager.delegate = self; // we set the delegate of locationManager to self.
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];


if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
    [locationManager requestWhenInUseAuthorization];
}

И запрос вызывается, но пользователю не предлагается? Зачем?

Ответ 1

Вероятно, вам необходимо обновить файл plist. Здесь учебник, как это сделать, быстро и грязно:

Вам нужно добавить один из следующих ключей в файл Info.plist:

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

Вам также необходимо запросить авторизацию для соответствующего метода определения местоположения WhenInUse или Background. Используйте один из этих вызовов:

[self.locationManager requestWhenInUseAuthorization]
[self.locationManager requestAlwaysAuthorization]

Там также сообщение, которое я нашел полезным:

Службы местоположения, не работающие в iOS 8

Этот ответ описывает как обновить файл plist:

Добавьте в свой info.plist одну из следующих строк

<key>NSLocationWhenInUseUsageDescription</key>
<string>The spirit of Qaru is coders helping coders</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>I have learned more on Qaru than anything else</string>

Вероятно, вы захотите настроить и проверить орфографию строк словаря, которые находятся в файле info.plist, прежде чем отправит код.