Загрузка больших файлов, которая занимает более 10 минут, когда устройство iPad заблокировано - PullRequest
4 голосов
/ 23 февраля 2012

У меня есть требование, когда пользователь может загружать несколько файлов один за другим.Когда мое приложение работает в фоновом режиме ИЛИ, когда iPad заблокирован, загрузка или ответ веб-службы могут быть получены только в течение 10 минут.

Моя загрузка происходит в отдельном потоке, я реализовал beginBackgroundTaskWithExpirationHandler: после некоторого поиска в Googleи по ссылкам stackoverflow.

Как реализовать завершение задачи

Сбой приложения из-за автоматической блокировки в iphone?

иДокументация iOS

https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

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

Есть ли альтернатива?за это??Должен ли я полностью приостановить загрузку, пока приложение работает в фоновом режиме?Может ли кто-нибудь помочь мне с этим ??

Мне удалось это сделать, не завершив фоновую задачу, если моя загрузка продолжается

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"\n beginBackgroundTaskWithExpirationHandler called \n"); if(![self checkIfDownloadInProgress]){ [self endTaskOnCompletion]; } }];

Это работает, только еслиустройство вручную заблокировано пользователем.Если устройство блокируется автоматически через 2 минуты, приложение работает в течение 10 минут, а затем оно выходит из строя. Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 23 августа 2012

Только так, как я нашел, это возможно:

  1. Использование возобновляемых переводов, загрузка / выгрузка кусками.
  2. При отправке заявки в фоновом режиме продолжить передачу в течение 10 минут
  3. Очистка, когда время истекло
  4. Возобновить перевод при активации приложения

В этом документе кратко изложены возможные решения в области сетевых технологий и многозадачности: https://developer.apple.com/library/ios/#technotes/tn2277/_index.html

0 голосов
/ 23 февраля 2012
  1. Если , то нет необходимости, затем приостановите его.Это лучшее, что вы можете сделать.
  2. Иначе когда вызывается ваш обработчик истечения, вы можете снова запустить фоновое задание, и вы получите еще 10 минут.
...