iPhone фоновое задание периодически - PullRequest
0 голосов
/ 02 ноября 2010

У меня есть вопрос, где я хочу периодически собирать данные GPS, скажем, каждые 5 минут. Я могу сделать это без проблем, когда приложение работает. Однако я хотел узнать, есть ли стандартный способ сделать это, используя iPhone «многозадачность». Я могу собирать данные, используя фоновый процесс, используя модель постоянного обновления и существенные изменения, но они либо слишком ресурсоемки, либо неточны.

Я нахожусь в процессе поиска NSLocalNotification, однако, я не уверен, что держит приложение в фоновом состоянии при периодической проверке местоположения, я думаю, что у этого есть только возможность запуска приложения.

Спасибо заранее.

1 Ответ

1 голос
/ 02 ноября 2010

Невозможно периодически выполнять получение данных GPS (например, каждые 5 минут).

Из документации Apple:

Советы по экономии заряда батареи

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

  • Отключайте службы определения местоположения, когда вы их не используете. Это может показаться очевидным, но это стоит повторить.За исключением навигационных приложений, предлагающих пошаговые инструкции, большинству приложений не требуются постоянно включенные службы определения местоположения.Включите службы определения местоположения достаточно долго, чтобы получить определение местоположения, а затем отключите их.Если пользователь не находится в движущемся транспортном средстве, текущее местоположение не должно изменяться достаточно часто, чтобы быть проблемой.И вы всегда можете снова запустить службы определения местоположения позже, если это необходимо.
  • Используйте службу определения местоположения с существенными изменениями вместо стандартной службы определения местоположения, когда это возможно. Служба определения местоположения с существенными изменениями обеспечивает значительную экономию энергии.в то же время позволяя вам оставить работающие службы определения местоположения.Это настоятельно рекомендуется для приложений, которым необходимо отслеживать изменения местоположения пользователя, но не требуется более высокая точность, предлагаемая стандартными службами определения местоположения.
  • Используйте значения с более низким разрешением для желаемой точности, если это не такЭто может повлиять на работу вашего приложения. Запрос на более высокую точность, чем вам нужно, заставляет Core Location включать дополнительное оборудование и тратить энергию на точность, которую вы не используете.Если вашему приложению действительно не нужно знать положение пользователя в пределах нескольких метров, не помещайте значения kCLLocationAccuracyBest или kCLLocationAccuracyNearestTenMeters в свойство нужныйAccuracy.И помните, что указание значения kCLLocationAccuracyThreeKilometer не мешает службе определения местоположения возвращать более качественные данные.В большинстве случаев Базовое местоположение может возвращать данные местоположения с точностью до ста метров или около того, используя Wi-Fi и сотовые сигналы.
  • Отключение событий местоположения, если точность не улучшается в течение периодавремени. Если ваше приложение не получает события с желаемым уровнем точности, вы должны посмотреть на точность полученных событий и посмотреть, улучшается ли она или остается примерно такой же с течением времени.Если точность не улучшается, это может быть потому, что требуемая точность просто не доступна в данный момент.Отключение служб определения местоположения и повторная попытка позже предотвращают потерю энергии приложением.
...