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, будут некоторые фоновые задачи ... изменит ли это исчисление для компромисса между этими двумя методами?) Кто-нибудь имеет представление о том, как эти два сравниваются?
Спасибо! Будем рады узнать, сможем ли мы докопаться до того, как сравнить эти методы.