Базовое расположение не работает на симуляторе ios

Мое приложение создано Xcode 5 для ios7, когда я нажал кнопку "Получить местоположение", появилось сообщение "MyApp хотел бы использовать ваше текущее местоположение", теперь я обновил Xcode, и на ядре ios8 не запускается, пропуская некоторую клавишу добавить? или какой-то класс? чтобы в ios7 не было необходимости реализовывать?

1 ответ

Решение

iOS 8 CoreLocation API изменился.

Поэтому первое, что вам нужно сделать, это добавить один или оба из следующих ключей в ваш файл Info.plist:

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

Оба этих ключа принимают строку, которая является описанием того, зачем вам нужны службы определения местоположения. Вы можете ввести строку типа "Местоположение требуется, чтобы узнать, где вы находитесь", которую, как и в iOS 7, можно локализовать в файле InfoPlist.strings.

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

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

Ниже код работает как ios7 и ios8 .

if (_locationmanager == nil) {
    _locationmanager = [[CLLocationManager alloc] init];
}
_locationmanager.delegate = self;
_locationmanager.distanceFilter = kCLDistanceFilterNone;
if ([CLLocationManager  locationServicesEnabled]) {  // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.

if ([_locationmanager respondsToSelector:@selector(requestWhenInUseAuthorization)])           {
    [_locationmanager requestWhenInUseAuthorization];
}
[_locationmanager startUpdatingLocation];
Другие вопросы по тегам