2012-03-13 4 views
0

команды,поведение NSTimer, NSURLConnection, NSThread когда приложение находится в фоновом состоянии

я занимаюсь разработкой приложения IOS. Мое требование - запрашивать конкретную службу новостей (REST API) в течение регулярного интервала времени. Я хотел дважды запросить услугу в течение дня и обновить свой sqllite db, даже если приложение находится в фоновом состоянии. Мой пользовательский интерфейс будет обновлен с данными, полученными из sqllite db, в то время как приложение находится на переднем плане.

Мой вопрос являются,

  1. Можно ли запустить NSTimer в фоновом режиме постоянно? если да, то есть ли какой-либо максимальный срок для запуска таймера в фоновом режиме (скажем, 10 минут или 60 минут)?

  2. Можно ли отправить запрос на скачивание файла с помощью NSURLConnection и сохраните файл в каталог документов, когда приложения в фоновом режиме?

Ваши предложения будут очень полезны для моего проекта. Спасибо заранее.

+0

вы копировать чью-то почту ?? – Vin

ответ

0

Отвечая на мой собственный вопрос, так что это будет полезно для других.

Ques 1: Возможно ли запустить NSTimer в фоновом режиме непрерывно?

Ans: Nstimer не будет работать во время приложения в фоновом режиме. Таким образом, в фоновом режиме нет значения максимального допустимого таймера. Если приложение входит в фоновый режим во время текущего процесса, [UIApplication beginBackgroundTaskWithExpirationHandler:] может использоваться для завершения текущего процесса. Максимальное время, разрешенное ОС с этим обработчиком, составляет 10 минут.

Ques 2: Можно ли отправить запрос на загрузку файла с помощью NSUrlConnection и сохранить файл в каталоге документов, когда приложение находится в фоновом режиме?

Ans: Ниже данная информация от компании Apple документации.Подробно найден here

В прошивкой, только определенные типы приложений могут выполняться в фоновом режиме:

  • Apps, которые играют звуковой контент пользователю в то время как в фоновом режиме, например, музыкальный проигрыватель приложение
  • приложения, которые поддерживают пользователей об их месте в любое время, например, в качестве навигационного приложения
  • приложения, supportVoice по интернет-протоколу (VoIP)
  • Прессу приложения, которые необходимо d ownload и обрабатывать новое содержание
  • приложения, которые получают регулярные обновления от внешних устройств

Информации о запуске фонового процесса с помощью приложения типа VOiP можно найти here

0

Что вы стремитесь не может быть достигнуты на прошивке:

Произвольных приложения не могут работать в фоновом режиме для произвольного количества времени.

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

Вопрос, который вы должны задать себе в этот момент, вероятно, таков:
Если вы обновляете только два раза в день, насколько плохо может быть инициировать загрузку, когда ваше приложение станет активным?

+0

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

+0

Это возможно (в определенной степени): см. Https://developer.apple.com/library/ios/technotes/tn2277/ и документацию для '- [UIApplication beginBackgroundTaskWithExpirationHandler:]' (каким-то образом ссылка на метод прерывается при размещении здесь ...) для справки. – danyowdee

+0

Спасибо за ур ссылку, это полезно !!! – shatthi

Смежные вопросы