Что я могу сделать в фоновом потоке местоположения?

Ради этого вопроса предположим, что я планирую создать клиентское приложение Google Latitude для iOS 4. Моему приложению необходимо загружать местоположение GPS пользователя каждые две минуты, а также загружать местоположения друзей пользователя. - на заднем плане!

мое приложение не может дождаться, когда ОС разбудит его на коммутаторах вышек сотовой связи (потому что они могут произойти только через 2 км, а мое приложение нуждается в постоянном обновлении GPS), поэтому я понимаю, что могу создать поток, похожий на те, что GPS используют навигаторы, для работы в фоновом режиме.

У меня нет знаний в программировании для iPhone, мне просто нужно знать, возможно ли мое приложение.

  1. Смогу ли я получить доступ к Интернету из фонового потока (и загрузить местоположение пользователя по GPS), или он ограничен только выборкой местоположения GPS. 1.
  2. Одобрит ли Apple такое приложение, или такое использование запрещено? потому что мое приложение не очень критично, например, GPS-навигатор

Спасибо!


person eyalw    schedule 30.07.2010    source источник


Ответы (2)


Как сказал Дон, iOS будет отправлять события местоположения в приложения, которые его поддерживают. Оттуда приложение может делать то, что ему нужно, с событием местоположения.

Фоновые приложения могут регистрироваться для одного из трех вариантов:

  1. Только значительные изменения: маломощный способ отслеживания местоположения, который пробуждает приложение только при «значительном» изменении местоположения.
  2. Стандартные службы определения местоположения: совместимы со всеми устройствами iOS, которые могут использовать службы определения местоположения, позволяют указать изменение расстояния и работают в фоновом режиме. Однако, если приложение было закрыто или приостановлено, iOS не будет пытаться перезапустить приложение.
  3. Службы непрерывного определения местоположения: позволяет программе получать непрерывные обновления местоположения, а iOS не будет приостанавливать приложение при его отправке в фоновый режим.

Дополнительная информация: Выполнение кода в фоновом режиме и Руководство по программированию определения местоположения

Если вы посмотрите на Выполнение кода в фоновом режиме, Apple предоставит рекомендации о том, что должны и чего не должны делать многозадачные приложения.

person Community    schedule 30.07.2010
comment
Если я выберу услуги постоянного определения местоположения, через какие интервалы я буду получать обновления? Могу ли я зарегистрировать обновление для смены на 100 метров или каждые 2 минуты? как это работает? - person eyalw; 31.07.2010
comment
Вы указываете DistanceFilter в метрах. Если телефон переместился больше, чем DistanceFilter, приложению будет отправлено событие. Если вы укажете kCLDistanceFilterNone в качестве DistanceFilter, вы будете получать уведомления обо всех перемещениях. - person ; 31.07.2010

Вы получите сообщение locationManager:didUpdateToLocation:fromLocation: в своем приложении. Там вы можете делать все, что вам нужно, хотя вам не следует обновлять пользовательский интерфейс или использовать Open GL, если вы находитесь в фоновом режиме.

person Don    schedule 30.07.2010
comment
Могу ли я делать все, что захочу в этом методе (например, отправлять координаты на сервер)? - person picknick; 20.01.2011
comment
Да, вы должны быть в состоянии. Однако я не уверен, сколько времени вам дается на выполнение вашей задачи. - person Don; 22.01.2011