Простой вопрос... У меня есть приложение, которое регистрирует местоположение пользователя через 30 секунд (используя NSTimer), оно отлично работает, пока приложение не станет "неактивным", а NStimer остановится. Как следствие, я ищу варианты для поддержания моего интервала местоположения (30 секунд), который все еще способен записывать довольно точные данные о местоположении (с точностью до 100 м).
-
Option_001, Brute Force:. Пусть CLLocationManager, startUpdatingLocation выполняется все время с использованием UIBackgroundModes = "location". Не рекомендуется, разряжает аккумулятор. Регулярность по запросу, Точность ок. 10-65m. Возможно, это будет единственный реалистичный вариант.
-
Option_002, SLC: Я мог бы использовать значительное изменение местоположения, но частота обновлений местоположения довольно плохая (не говоря уже о точности). Это особенно актуально, если приложение работает в сельской местности или в пустыне с ограниченным количеством ячеек. Неопределенная регулярность, Точность ок. 500m
-
Option_003, Hybrid: Я мог бы использовать существенное изменение местоположения (SLC) в фоновом режиме в качестве индикатора "значительного" движения, а затем запросить местоположение GPS на основе kCLLocationAccuracyBest. Это будет работать, но события SLC не собираются приближаться к 30 секундам (особенно при ходьбе). Неопределенная регулярность, Точность ок. 10-50m.
-
Option_004, что-то еще? любые идеи будут высоко оценены.
ПРИМЕЧАНИЕ: Я думал, что у меня это работает, потому что когда вы нажимаете [LOCK] на iPhone (подключен через USB), приложениеWillResignActive вызывается, но NSTimers не останавливаются. Если вы попробуете то же самое, если iPhone не подключен (т.е. Когда телефон будет в обычном режиме), NSTimers остановятся почти сразу после вызова приложенияWillResignActive.