Доступ к местоположению - приложение не запрашивает разрешения пользователя на доступ к местоположению - iOS 11
Описание
Приложение не запрашивает разрешения пользователя на доступ к местоположению и получение состояния notDetermined
Работает отлично до iOS-10
var locationManager : CLLocationManager!
func getLocationDetails()
{
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
{
if status == CLAuthorizationStatus.authorizedAlways || status == CLAuthorizationStatus.authorizedWhenInUse
{
locationManager.startUpdatingLocation()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
}
Снимок экрана Plist
![введите описание изображения здесь]()
Фоновые режимы
![введите описание изображения здесь]()
Ответы
Ответ 1
Я просмотрел документацию Apple и нашел решение для этого вопроса.
Apple изменила несколько рекомендаций, чтобы получить местоположение пользователя.
Вот ссылка на видео: Apple - что нового в технологии размещения
Полный код для доступа к местоположению в Swift & Objective-C и
Решение:
Теперь нам нужно добавить три ключа аутентификации в Plist:
- NSLocationAlwaysAndWhenInUseUsageDescription
- NSLocationWhenInUseUsageDescription
- NSLocationAlwaysUsageDescription
Плист будет выглядеть так:
И экран сообщения об аутентификации будет выглядеть так:
![введите описание изображения здесь]()
Полный код для доступа к местоположению
Ответ 2
Пожалуйста, запросите другое разрешение также "Когда когда-либо в разрешении на использование" и добавьте оба разрешения на plist.
Ответ 3
В файле info.plist
я добавил оба Keys, чтобы запросить разрешения, однако после удаления приложения и его повторного запуска симулятор не отобразил предупреждение, чтобы разрешить пользователю выберите один из вариантов.
Я могу сделать предупреждение снова появлением после удаления приложения, затем открыть settings
приложение и, наконец, снова установить приложение.
Надеюсь, это может помочь кому-то.
Ответ 4
Измените requestAlwaysAuthorization
на whenInUseAuthentication
. Затем он начнет работать. Я думаю, это может быть связано с GM Seed/Beta версии xcode. В стабильной версии у нас может не быть этой проблемы.