Доступ к местоположению - приложение не запрашивает у пользователя разрешения на доступ к местоположению - 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])
    {


    }

Скриншот Plist

Фоновые режимы

4 ответа

Решение

Я просмотрел документацию Apple и нашел решение для этого вопроса.

Apple изменила несколько рекомендаций, чтобы получить местоположение пользователя.

Вот ссылка на видео: Apple - что нового в технологиях определения местоположения

Полный код для определения местоположения в Swift и Objective-C

Решение:

Теперь нам нужно добавить три ключа аутентификации в Plist:

  1. NSLocationAlwaysAndWhenInUseUsageDescription
  2. NSLocationWhenInUseUsageDescription
  3. NSLocationAlwaysUsageDescription

Плист будет выглядеть так: введите описание изображения здесь И экран сообщения аутентификации будет выглядеть так:

введите описание изображения здесь

Полный код для доступа к местоположению

Пожалуйста, попросите другое разрешение также "Когда-либо в использовании разрешение" и добавьте оба разрешения в списке.

Я добавил оба ключа в info.plist файл, чтобы запросить разрешения, однако после удаления приложения и его повторного открытия симулятор не отображал предупреждение, позволяющее пользователю выбрать один вариант.

После удаления приложения я снова смогу отобразить предупреждение settings приложение и, наконец, снова установить приложение.

Надеюсь, это может кому-нибудь помочь.

Пожалуйста измените requestAlwaysAuthorization в whenInUseAuthentication, Тогда это начнет работать. Я думаю, что это может быть связано с GM Seed/Beta-версия xcode. В стабильной версии у нас может не быть этой проблемы.

Другие вопросы по тегам