Как сбросить центр региона при выходе из региона в фоновом режиме, используя CoreLocation
Моя идея проста в теории, но мне очень трудно ее реализовать. Я хочу создать геозону в местоположении пользователя, и когда пользователь выходит из этого региона, я хочу перецентрировать регион в обновленном местоположении пользователя. Вот поток:
- Получить текущее местоположение пользователя с помощью стандартного [CLLocationManager startUpdatingLocation]
- В locationManager:didUpdateLocations:, создайте геозону в текущем местоположении с помощью startMonitoringForRegion, а при последующих обновлениях местоположения повторно центрируйте этот регион
- В locationManager:didExitRegion:, который обычно вызывается из фона для пробуждения приложения, вызовите [CLLocationManager startUpdatingLocation], чтобы получить текущее местоположение пользователя для центрирования геозоны (центрируется в следующем обновленном местоположении, которое НЕ является текущей координатой центра региона),
Иногда это все работает, но чаще всего геозона не переходит правильно. Происходит то, что регион перецентрируется, и сразу вызывается locationManager:didExitRegion:, который помещает его в бесконечный цикл до тех пор, пока приложение не будет снова завершено. Поскольку оно прекращается без действительного отслеживаемого региона, приложение не будет активировано для обновления местоположения.
Это неправильное использование мониторинга региона? Я пытаюсь поиграть с различными способами отслеживания местоположения пользователя эффективным способом батареи (и не постоянно, используя стандартную startUpdatingLocation). Будет ли сочетание отслеживания изменений местоположения и мониторинга посещений более эффективным?
Спасибо!