«Не разрешать» в LocationManager продолжает регистрировать ошибки

StackOverflow https://stackoverflow.com/questions/2448842

Вопрос

У меня есть приложение, которое проверяет местоположение.Он просит пользователя использовать местоположение, и если пользователь говорит «нет» в меню, возникает проблема, когда я загружаю представление карты.

Как только я выбираю MapView, он снова запрашивает местоположение пользователя.Если пользователь снова говорит «нет», моя консоль продолжает отображать ошибки/предупреждения, а также мой NSLog из «didFailWithError» моего класса диспетчера местоположения.

Есть ли способ остановить LocationManage:didFailWithErrors, если пользователь уже сказал «нет»?Я не думаю, что Apple примет мое приложение, если файл журнала заполнится моим LocationManager.

Вот пример того, что повторяется в консоли

ERROR,Time,290362745.002,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",server did not accept client registration 1
WARNING,Time,290362745.005,Function,"void CLClientHandleDaemonInvalidation(__CFMessagePort*, void*)",client 1035.0 has been disconnected from daemon
2010-03-15 12:19:05.002 SAQ[1035:207] LocationManager Error Denied by user
Это было полезно?

Решение

Документация по -didFailWithError: метод говорит:

Если пользователь отрицает использование вашего приложения службы местоположения, этот метод сообщает об ошибке.Получив такую ​​ошибку, вы должны остановить службу местоположения.

Поэтому после получения этой ошибки вы должны отправить менеджеру местоположения сообщение о прекращении обновления местоположения:

[manager stopUpdatingLocation];

Если вы используете MKMapView, я думаю, что его установка showsUserLocation свойство NO должно помочь.

Другие советы

Вы обязаны проверить код ошибки и прекратить обновление местоположения, если код ошибки kCLErrorDenied.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top