2016-05-27 2 views
3

Я хотел бы сделать пустой запрос POST и прочитать заголовки ответов, в то время как мое приложение iOS находится в фоновом режиме. Глядя на документацию, прямо говорится, что загружать и выгружать задачи поддерживаются в фоновом режиме, но есть две проблемы:NSURLSessionDataTask в фоновом режиме

  1. не нужно загружать контент, так что я не хочу, чтобы создать пустой файл использовать.
  2. Мне нужно получить заголовки, поэтому задача загрузки не предоставляет необходимые обратные вызовы делегатов.

Который оставляет меня с NSURLSessionDataTask, для которых documentation состояния:

Примечание: Перед прошивкой 8 и OS X 10.10, задачи данных не поддерживаются в фоновом режиме сессий.

Однако another documentation page государства под тем же названием (фоновой передачи соображения):

только загружать и выгружать задачи не поддерживаются (нет данных) задачи.

Какую страницу с документацией верной? Являются ли NSURLSessionDataTasks без данных для загрузки в фоновом режиме?

ответ

5

См. WWDC 2014 видео What's New in Foundation Networking, около 49 минут. Суть в том, что теперь вы можете выполнять задачи данных в фоновом режиме, но это будет работать только в том случае, если приложение запущено. Если приложение приостановлено или завершено, оно не может выполнить задачу данных, хотя вы можете преобразовать его в задачу загрузки, когда он получит ответ. (FWIW, мне не очень полезно иметь задачу фоновых данных, которая может работать только во время работы приложения.)

Я не уверен, почему вы беспокоитесь о загрузке и задании данных. Мне кажется, что вы можете просто начать загрузку задачи, а затем в didFinishDownloadingToURL, посмотрите на downloadTask.response.

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

+0

Я пытаюсь реализовать многостраничный протокол загрузки, который требует от меня сделать запрос HEAD или POST, чтобы начать загрузку, и я хочу, чтобы он работал, даже когда приложение приостановлено. Дело в том, что я хочу иметь возможность отправлять запрос HEAD/POST на NSURLSession во время работы приложения, но даже если служба данных не доступна, и для записи ответа (без сохранения ответа на файл). – JustinHK

+0

Когда вы инициируете фоновый запрос, единственными параметрами, которые он должен выполнять, пока приложение неактивно, является выполнение задачи загрузки или загрузки. Итак, почему бы вам просто не инициировать запрос на загрузку, а просто игнорировать загруженный блок ответа и просто посмотреть на «ответ» задачи, когда фоновый демон пробуждает ваше приложение? Честно говоря, я до сих пор не понимаю, почему веб-служба была спроектирована так, чтобы требовать два разных запроса при загрузке данных (просто инициируйте запрос на отправку фона, который будет запускаться фоновым демоном, когда будет установлено подключение к Интернету). – Rob

+0

Служба поддерживает возобновляемые загрузки, поэтому вам нужно иметь возможность проверять текущее смещение загрузки с помощью запросов HEAD - например, этот API YouTube: https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol – JustinHK

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