2015-02-17 2 views
2

Я обновляю приложение, которое отслеживает значительные изменения местоположения пользователя с помощью CLLocationManager. Я разрешаю пользователю включать или выключать эту опцию, соответственно устанавливая параметры startMonitoringSignificantLocationChanges и stopMonitoringSignificantLocationChanges.Как определить, контролирует ли CLLocationManager значительные изменения местоположения

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

Есть ли что-то, что я могу проверить в CLLocationManager или в другом месте, чтобы сообщить мне, включен или выключен мониторинг.

ответ

0

В iOS 8 вы можете проверить текущее разрешение, которое вы получаете от пользователя. Если пользователь дает вам разрешение Always, это означает, что они допускают значительные изменения местоположения. Если они разрешают только WhenInUse, они не допускают значительных изменений местоположения. См. this post для получения подробной информации о том, что вы получаете от двух разрешений на доступ.

До IOS 8, я не верю, что есть способ сказать это. Пользователь может либо разрешить вам использовать свое местоположение, либо нет. Поэтому вам нужно будет следить за текущим статусом менеджера местоположений самостоятельно (т. Е. Иметь BOOL в NSUserDefaults, который изменяется на YES, когда вы вызываете startMonitoringSignificantLocationChanges, и устанавливаете его на NO, когда вы вызываете stopMonitoringSignificantLocationChanges).

1

Так отчасти из-за этого раздражающего ограничения на CLLocationManager я в конечном итоге избавился от использования значительных изменений местоположения в пользу регионов мониторинга. Преимущество этого заключается в том, что он намного точнее, чем случайное получение местоположения при изменении базовой ячейки, без существенного разряда батареи, но что еще более важно, вы можете спросить менеджера местоположения о том, какие регионы он контролирует, поэтому выясняя, включено ли оно или нет ,

Вы можете использовать его во многом так же, как значительные изменения местоположения, так как вы можете установить область вверх, радиус которой находится вокруг вашего текущего местоположения, а затем на ваш обратный вызов didExitRegion, получить правильный сигнал GPS и использовать его.

Смежные вопросы