«Не разрешать» в LocationManager продолжает регистрировать ошибки
-
20-09-2019 - |
Вопрос
У меня есть приложение, которое проверяет местоположение.Он просит пользователя использовать местоположение, и если пользователь говорит «нет» в меню, возникает проблема, когда я загружаю представление карты.
Как только я выбираю 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
.