Я работаю над приложением в Swift, которое должно получить GPS-координаты пользователя. Я добавил ключи (NSLocationWhenInUseUsageDescription и NSLocationAlwaysUsageDescription) в info.plist так:CLLocationManager не запрашивает разрешения пользователя
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location is required to find your coordinates</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Location is required to find your coordinates</string>
Я также добавил CoreLocation.framework и просил разрешить в методе viewDidLoad:
override func viewDidLoad() {
super.viewDidLoad()
var locManager = CLLocationManager()
locManager.requestWhenInUseAuthorization()
locManager.startUpdatingLocation()
if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedWhenInUse){
var currentLocation = locManager.location
longitude = currentLocation.coordinate.longitude
latitude = currentLocation.coordinate.latitude
textBox.text = longitude.description + latitude.description
}
}
Проблема заключается в том , как говорится в заголовке, что пользователю не предлагается разрешение, поэтому местоположение никогда не обновляется.
Добро пожаловать в SO. Вы уже пробовали следовать инструкциям Apple в письме? В разделе «Запрос разрешения на использование служб местоположения» в [ссылка на класс] (https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html) есть другой поток к тому, что вы вы использовали, в частности, чтобы проверить статус, прежде чем запрашивать авторизацию, и вы должны установить делегат. Можете не исправить вашу проблему, но сначала стоит попытаться сделать это, если вы еще этого не сделали. –
Попробуйте это в viewDidAppear -: locManager = CLLocationManager() locManager.delegate = само locManager.desiredAccuracy = kCLLocationAccuracyKilometer locManager.requestAlwaysAuthorization() – Amit89