iPhone Brainstorm - CLLocation в фоновом режиме - опрос каждые 15 минут - PullRequest
2 голосов
/ 23 мая 2011

Вот сценарий. Мне нужно приложение, которое каждые 15 минут опрашивает веб-сервис с указанием местоположения пользователя, будь то в фоновом режиме / на переднем плане.

На данный момент я:

  1. Запуск / перезапуск диспетчера местоположений с наивысшей точностью и фильтрацией расстояний нет.
  2. Подождите, пока не достигнете желаемой точности.
  3. Хранение чтения
  4. setDesiredAccuracy: «kCLLocationAccuracyThreeKilmeters»
  5. setDistanceFilter: 1000
  6. Установить executeSelector: @selector (getLocation) сObject: nil afterDelay: 900
  7. Начните снова с шага 1.

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

Спасибо Джеймс.

Ответы [ 3 ]

2 голосов
/ 23 мая 2011

Если вы не ориентируетесь на iOS3, рассмотрите возможность использования API «значительных изменений», он должен быть наиболее эффективным для такого сценария.

1 голос
/ 23 мая 2011

Почему бы не зарегистрировать приложение для значительного изменения местоположения и просто использовать это? Множество приложений делают (включая некоторые из моих), и это довольно дружественный к батарее. На самом деле, НИЧЕГО НЕ ПРОИСХОДИТ, если только телефон не снимает сотовую вышку. Если телефон сидит где-то в течение нескольких часов, это буквально НЕТ воздействия батареи. В вашем подходе вся среда CL и оборудование GPS должны запускаться каждые 15 минут.

0 голосов
/ 08 июня 2011

В итоге я получил приложение для запуска / остановки диспетчера местоположения каждые 15 минут на executeSelector: WithDelay.

Обычно, когда CLLocationManager давал показания с требуемой точностью, я понижал CLLocation для значительных изменений, затем через 15 минут настраивал приложение на повторное считывание, менял точность на одну из самых высоких настроек и повторял.

Надеюсь, это поможет любому в будущем. Спасибо Джеймс

...