1

Я разрабатываю приложение, в котором пользователь может установить несколько местоположений. Мне удастся показать уведомления, когда пользователь вводит или оставляет конкретную границу местоположения.Необходимо получить более 20 уведомлений для мониторинга региона

Теперь есть ситуация, когда мне нужно обеспечить мониторинг для всех сохраненных мест, и это могут быть сотни и более. Я читал в Apple Forum и многие, где эти устройства iOS позволяют только 20 Мониторинг региона.

enter image description here

Я развивать свой код, чтобы превысить эту ситуацию. Я установил locationManager.distanceFilter = 200; и когда я получаю обновление для местоположения. Во-первых, я остановил весь мониторинг региона и условия для ближайших местоположений и снова запустил Мониторинг региона для 20 сохраненных мест.

Я думаю, что решение выше может привести к отсутствию любого сохраненного местоположения при остановке и повторном запуске мониторинга региона. Итак, пожалуйста, предоставьте мне еще одно лучшее решение для решения этой проблемы только 20 уведомлений о проблеме мониторинга региона.

Иметь хороший день. !! ..

+0

Используйте важные обновления для изменения, а не мониторинг региона. – Wain

+0

@Wain: Спасибо за ответ. На самом деле ранее я использовал для этого значительное обновление местоположения, но я никогда не буду точно таким, как «Мониторинг регионов». Даже раньше я спросил эту проблему. Вы можете найти мои вопросы для этого: 1. http://stackoverflow.com/questions/29248637/how-to-get-accurate-location-update-when-application-is-killed 2. http: // переполнение стека.com/questions/29250289/not-able-to-get-notification-on-specific-location-like-reminder-application Но это не помогло мне, и RegionMonitoring решила мою проблему, оставив 20+ проблем с мониторингом региона. –

ответ

4
  1. Уже NSMutableArray со всеми регионами, которые вы хотите следить за +20.
  2. Слушайте значительные обновления местоположения.
  3. Когда вы получаете обновления местоположения, если NSMutableArray всех ваших регионах более чем 20, то остановить мониторинг всех регионов был отслеживаемые и вычислить 20 ближайших регионов, используя формулу harvesine:

Harvesine - Objective C

Harvensine - Swift

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

Примечание: Это расстояние будет в километрах, если ваш радиус находится на метрах, а затем просто умножьте результат метода haversine на 1000, чтобы он преобразуется в метры.

  1. Начать мониторинг списка результатов из 20 ближайших регионов.

Это позволит вам всегда следить за 20 ближайшими регионами в зависимости от вашего местоположения. Был способен контролировать более 20, так как он будет постоянно менять регионы мониторинга в 20 ближайших регионах.

+0

Я реализовал ту же логику. Замечания ... отлично ... но метод didExitRegion вызывается несколько раз, когда устройство переходит из сети 3G в WIfi ... Не могли бы вы помочь здесь? –

+0

didExitRegion действительно вызывает многократное использование идентификатора региона для идентификации региона и игнорирования, если вы уже предприняли действия – amar