Доступ к местоположению - приложение не запрашивает разрешения пользователя на доступ к местоположению - 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. В стабильной версии у нас может не быть этой проблемы.