locationManager.locationServicesEnabled
указывает, доступны ли службы определения местоположения, но не обязательно означает, что они разрешены для вашего приложения.
Используйте CLLocationManager.authorizationStatus()
, если вам нужно выяснить статус в определенный момент времени или внедрить
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
Обратите внимание, что начиная с iOS 8, запрос на авторизацию не выполняется автоматически, когда ваше приложение впервые пытается использовать службы определения местоположения.Вам нужно явно позвонить requestWhenInUseAuthorization()
, прежде чем вызывать startUpdatingLocation()
в вашем CLLocationManager
экземпляре.
И убедитесь, что в Info.plist есть ключ NSLocationAlwaysUsageDescription
или NSLocationWhenInUseUsageDescription
, в зависимости от того, какой тип авторизации вы хотите получить.Если они отсутствуют, нет ошибок, нет журналов, нет подсказок, нет ничего, что укажет вам правильное направление:)