NSURLSession в фоновом режиме, публикация и получение ответа от сервера?

Я пытаюсь понять, как правильно использовать NSURLSession для моего сценария, читая спецификацию, мне нужны дополнительные разъяснения. /Articles/UsingNSURLSession.html#//apple_ref/doc/uid/TP40013509-SW1" rel="nofollow">https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession .html#//apple_ref/doc/uid/TP40013509-SW1

Мой серверный API очень прост. Я использую protobufs для передачи данных, а полезная нагрузка сообщений очень мала, оборот очень быстрый. С точки зрения данных это просто передаваемые двоичные данные. Сервер поддерживает только POST-запрос и отвечает данными.

Итак, это выглядит так: - POST-запрос с пользовательскими заголовками и двоичной полезной нагрузкой - сервер отвечает сообщением и двоичной полезной нагрузкой (ответ также может включать настраиваемые заголовки)

Из того, что я вижу в документации, данные задачи — это именно то, что мне нужно, но они говорят

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

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


person katit    schedule 17.07.2014    source источник


Ответы (1)


в порядке. Я решил не удалять свой вопрос на случай, если кому-то еще понадобится эта информация. В той же статье документации говорится:

Отправка файла с помощью задачи загрузки Чтобы загрузить основное содержимое для задачи загрузки, ваше приложение должно предоставить либо объект NSData, либо основной поток как часть объекта NSURLRequest, предоставленного при создании запроса на загрузку.

Если вы предоставляете данные с помощью потока, ваше приложение должно предоставить метод делегата URLSession:task:needNewBodyStream: для предоставления нового основного потока в случае сбоя проверки подлинности. Этот метод описан далее в разделе «Загрузка основного содержимого с помощью потока».

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

person katit    schedule 17.07.2014