Я пытаюсь настроить приложение, которое сможет проверять местоположение людей в фоновом режиме, посмотреть, находятся ли они в определенном месте и отправить пинг на сервер, если они есть. Мы не хотим истощать энергию наших пользователей, поэтому мы пытаемся найти оптимальное решение.
Я сделал существенное чтение, и я не нашел очень много информации об этих методах. Я пойду через плюсы и минусы, как я их понимаю прямо сейчас
startMonitoringForSignificantChanges
Описание. Исходя из изменений в wi-fi и ячейке, система пробуждает приложение.
Приложения могут ожидать уведомления, как только устройство перемещается на 500 метров или более от его предыдущего уведомления. Он не должен ожидать уведомления чаще, чем раз в пять минут. Если устройство может извлекать данные из сети, диспетчер местоположений гораздо чаще доставляет уведомления своевременно.
Плюсы:
- Большая эффективность батареи
Минусы:
- В зависимости от изменений в wi-fi/ячейке.
- Можно только предположить, что это будет называться каждые 200 м до 2 км (если не больше в определенных областях)
- Подробнее о точности
- Таким образом, непоследовательность и неточность
10-минутный запуск обновления или "n-минутное обновление":
Описание. Это в основном запрашивает у приложения больше времени, когда истечет дополнительное время, оно вызывает [self.locationManager startUpdating], захватывает местоположение и расширяет фоновый поток еще на 10 минут.
Плюсы:
- Согласованный
- Может быть настолько точным, насколько вы хотите, чтобы он был таким же последовательным, как вы хочу его
Минусы:
- Выполнять вызов каждые десять минут или меньше, чтобы приложение работало в background (т.е. n не может превышать 10 для вызовов)
Вопросы: Какое влияние это оказывает на батарею? Происходит ли пробуждение GPS и его отключение больнее? Я не мог себе представить, что запуск короткой проверки местоположения на заднем плане сильно разрядит батарею... но опять же, я не знаю, что включает в себя включение GPS и получение полезного сигнала.
startMonitoringForRegion (гео-фехтование):
Проще говоря, ваше приложение пробуждается, когда вы входите в заранее определенный регион. Это их странность, она более поздняя, и на ней меньше документации. Я не могу найти хорошее описание того, как "система контролирует" пересечение границы. Для всех, кого я знаю, это какой-то действительно умный алгоритм, или они постоянно пингоруют GPS, что сделает его менее эффективным, чем другие методы для этого.
Плюсы:
- Простая реализация
- Управляемый системой, поэтому вам не нужно изобретать свои собственные специальные гео-ограждения. Только триггеры на пересечении границ... нет лишних данных, которые нужно просто выбросить в обмен на батарею.
- Таким образом, он должен быть лучшим для такого рода вещей, точным, управляемым системой.
Минусы:
- Люди сомневаются в его эффективности
- Огромные конфликты в отношении того, хорошо ли это для аккумулятора или если оно значительно сокращает срок службы батареи.
- Как система отслеживает это??
- В принципе, неопределенное поведение.
Я думаю, мой вопрос сводится к тому, как startMonitoringForRegion: сравните с этими другими методами тестирования местоположения пользователя в фоновом режиме, когда дело доходит до времени автономной работы, согласованности и точности. Кто-нибудь тщательно проверил это? Или использовали его в своем приложении и получили хотя бы некоторую обратную связь? Вероятно, для моих целей компромисс между гео-фехтованием и 10-минутным методом обновления. (Также учитывая, что Apple публично заявила об iOS7, будут некоторые фоновые задачи... это изменит исчисление для компромисса между этими двумя методами?) Кто-нибудь имеет представление о том, как эти два сравниваются?
Большое спасибо! С нетерпением ждем, если мы сможем понять, как сравнить эти методы.