CLLocationManager geo-fencing / startMonitoringForRegion: против startMonitoringForSignificantLocationChanges: против 10-минутных вызовов startUpdating

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

Я много читал и не нашел много информации об этих методах. Я пойду через плюсы и минусы, как я понимаю их прямо сейчас

startMonitoringForSignificantChanges

Описание: на основе изменений Wi-Fi и сотовой вышки система запускает приложение.

Документы:

Приложения могут ожидать уведомления, как только устройство переместится на 500 метров или более от предыдущего уведомления. Не следует ожидать уведомлений чаще, чем раз в пять минут. Если устройство способно извлекать данные из сети, менеджер местоположения с гораздо большей вероятностью будет своевременно доставлять уведомления.

Плюсы:

Наиболее эффективный аккумулятор

Минусы:

Зависит от изменений Wi-Fi / сотовой вышкиМожно только предположить, что это будет называться каждые 200 м до 2 км (если не больше в определенных областях)Подробнее о точностиТаким образом, противоречивый и неточный

10-минутное стартовое обновление или "n-минутное обновление":

Описание: в основном, приложение запрашивает больше времени, когда истекает это дополнительное время, оно вызывает [self.locationManager startUpdating], захватывает местоположение и продлевает фоновый поток еще на 10 минут.

Плюсы:

последовательныйМожет быть настолько точным, насколько вы хотите, чтобы быть настолько последовательным, насколько вы хотите

Минусы:

Должен делать вызов каждые десять минут или меньше, чтобы приложение работало в фоновом режиме (т.е. n не может быть больше 10 для вызовов)

Вопросы: Как это влияет на батарею? Неужели пробуждение GPS и его выключение больше вредят батарее? Я не мог себе представить, что проведение краткой проверки местоположения в фоновом режиме приведет к чрезмерному разряду батареи ... но, опять же, я не знаю, что влияет на включение GPS и получение полезного сигнала.

startMonitoringForRegion (гео-фехтование):

Проще говоря, ваше приложение просыпается, когда вы входите в заранее определенный регион. Это странный из них, он более свежий, и документации на него меньше. Я не могу найти хорошее описание того, как «система контролирует» пересечение границы. Насколько я знаю, это какой-то действительно умный алгоритм, или они постоянно проверяют GPS, что сделает его менее эффективным, чем другие методы для этого.

Плюсы:

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

Минусы:

Люди ставят под сомнение его эффективностьОгромные противоречия относительно того, хорошо ли это для времени автономной работы или если он истощает срок службы батареи ужасно.Как система отслеживает это?В основном, неопределенное поведение.

Я предполагаю, что мой вопрос сводится к тому, как startMonitoringForRegion: сравнить с этими другими методами тестирования местоположения пользователя в фоновом режиме, когда речь идет о сроке службы батареи, согласованности и точности. Кто-нибудь тщательно это проверил? Или использовал его в своем приложении и получил хоть какой-то отзыв? Вероятно, для моих целей компромисс между гео-фехтованием и 10-минутным методом обновления. (Также, учитывая то, что Apple публично сказала об iOS7, будут некоторые фоновые задачи ... изменит ли это исчисление для компромисса между этими двумя методами?) Кто-нибудь имеет представление о том, как эти два сравниваются?

Спасибо! Будем рады узнать, сможем ли мы докопаться до того, как сравнить эти методы.

Ответы на вопрос(1)

Ваш ответ на вопрос