Метод экземпляра CLLocationManager не заставляет Location Services включать более одного раза - PullRequest
0 голосов
/ 09 марта 2019

Я использую метод экземпляра requestWhenInUseAuthorization() класса CLLocationManager для принудительного появления предупреждающего сообщения Turn On Location Services to Allow "myApp" to Determine Your Location во второй раз после того, как пользователь выбирает Cancel при его первом появлении, но предупреждающее сообщение не отображается второй раз. Может кто-нибудь объяснить, где я иду не так в моем коде? Спасибо.

У меня есть код ниже в одном пользовательском подклассе UITableViewController;

if (CLLocationManager.locationServicesEnabled() == false) || (CLLocationManager.authorizationStatus() != .authorizedWhenInUse)
{

    self.navigationController!.popViewController(animated: true)

}

, который должен заставить предыдущий экземпляр другого пользовательского подкласса UITableViewController снова отобразить его представление в методе viewDidAppear() ниже;

    override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)

    // prompts user to turn on location services
    locationManager.requestWhenInUseAuthorization()

}

но это не приводит к тому, что предупреждающее сообщение показывается пользователю во второй раз. Оба пользовательских экземпляра подкласса UITableViewController встроены в экземпляр UINavigationController в моем файле раскадровки.

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Запросить разрешение на использование услуг определения местоположения можно только один раз. Если пользователь отклоняет запрос, его невозможно снова запросить. С документация requestWhenInUseAuthorization():

Когда текущее состояние авторизации notDetermined, этот метод работает асинхронно и запрашивает у пользователя разрешение на использование приложением служб определения местоположения.

...

Если текущее состояние авторизации отличается от notDetermined, этот метод ничего не делает и не вызывает метод locationManager(_:didChangeAuthorization:).

Чтобы пользователь мог разрешить доступ к местоположению вашего приложения после того, как он отклонил его, ему необходимо зайти в приложение «Настройки» на своем устройстве, найти ваше приложение и включить там разрешения «Местоположение». Вы можете сделать это проще для пользователя, предоставив ссылку в своем приложении на эту страницу настроек, открыв UIApplicationOpenSettingsURLString URL .

Если вы этого еще не сделали, ознакомьтесь с разделом «Запрос разрешения» Руководства по взаимодействию с людьми, чтобы ознакомиться с передовыми практиками в этой области.

0 голосов
/ 10 марта 2019

Вам не нужно системное оповещение. Вы можете узнать, включены ли службы определения местоположения, позвонив (подождите) locationServicesEnabled().И тогда вы можете представить предупреждение, просящее пользователя включить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...