Доступ к местоположению - приложение не запрашивает у пользователя разрешения на доступ к местоположению - iOS 11
Описание
Приложение не запрашивает у пользователя разрешение на доступ к местоположению и состояние не определено
Работает отлично до 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])
{
}
Фоновые режимы
4 ответа
Я просмотрел документацию Apple и нашел решение для этого вопроса.
Apple изменила несколько рекомендаций, чтобы получить местоположение пользователя.
Вот ссылка на видео: Apple - что нового в технологиях определения местоположения
Полный код для определения местоположения в Swift и Objective-C
Решение:
Теперь нам нужно добавить три ключа аутентификации в Plist:
- NSLocationAlwaysAndWhenInUseUsageDescription
- NSLocationWhenInUseUsageDescription
- NSLocationAlwaysUsageDescription
Плист будет выглядеть так: И экран сообщения аутентификации будет выглядеть так:
Пожалуйста, попросите другое разрешение также "Когда-либо в использовании разрешение" и добавьте оба разрешения в списке.
Я добавил оба ключа в info.plist
файл, чтобы запросить разрешения, однако после удаления приложения и его повторного открытия симулятор не отображал предупреждение, позволяющее пользователю выбрать один вариант.
После удаления приложения я снова смогу отобразить предупреждение settings
приложение и, наконец, снова установить приложение.
Надеюсь, это может кому-нибудь помочь.
Пожалуйста измените requestAlwaysAuthorization
в whenInUseAuthentication
, Тогда это начнет работать. Я думаю, что это может быть связано с GM Seed/Beta-версия xcode. В стабильной версии у нас может не быть этой проблемы.