LocationManager:didUpdateToLocation: fromLocation не вызывается для мониторинга значительных изменений местоположения

#iphone #location #monitoring #cllocationmanager

#iPhone #Расположение #мониторинг #cllocationmanager

Вопрос:

Я внедрил фоновое отслеживание местоположения с использованием стандартных служб определения местоположения, и оно отлично работает. Однако, поскольку эта реализация использует много энергии, я решил переключиться на мониторинг значительных изменений местоположения. В принципе, я просто изменил все вызовы на startUpdatingLocation на startMonitoringSignificantLocationChanges и повторно использовал методы CLLocationManagerDelegate, которые я реализовал ранее.

Проблема в том, что после переключения на мониторинг значительных изменений местоположения метод делегирования locationManager:didUpdateToLocation:fromLocation вызывается только один раз, когда я начинаю мониторинг, и никогда больше не вызывается впоследствии. Я обошел телефон на пару километров и попытался покататься на нем на поезде, но все равно метод так и не был вызван. Я что-то здесь упускаю? Есть ли настройки, которые мне нужно включить, или специальный код, который мне нужно написать, чтобы это сработало?

Спасибо!

Ответ №1:

Для значительного изменения местоположения требуются вышки сотовой связи для работы. Если у вас нет приема по сотовому телефону, вы не получите никаких результатов. Вы также можете вызвать метод significantLocationChangeMonitoringAvailable от CLLocationManager, чтобы проверить, доступен ли он.

Комментарии:

1. Вы правы, похоже, что проблема вызвана низким уровнем сигнала мобильного телефона.

2. Я не верю, что это правильно. Во-первых, ключ UIRequiredDeviceCapabilities требуется только для того, чтобы «iTunes и App Store знали, какие функции, связанные с устройством, требуются приложению для запуска». Во-вторых, клавиша «местоположение» в UIBackgroundModes необходима только тогда, когда приложению «требуется использование стандартных служб определения местоположения (в отличие от службы определения местоположения значительных изменений)». Подробности: developer.apple.com/library/ios/#documentation/general / …