Загрузка фона NSURLSession иногда задерживается

У меня есть приложение, которое уже работает в фоновом режиме. Он должен отправлять два http-запроса при входе или выходе из геозоны.

Я использую NSURLSessionDownloadTask (поскольку UploadTask не имеет делегата didFinish) и установил для временной папки загрузки разрешение NSFileProtectionCompleteUntilFirstUserAuthentication. Для моего HTTPMaximumConnectionsPerHost установлено значение 1. Сеанс создается с помощью backgroundSessionConfiguration, и у меня есть только один идентификатор.

Иногда он работает отлично, но иногда iOS откладывает запрос до следующей разблокировки экрана/запуска приложения. Если это произойдет, то последовательно (из-за моих максимальных подключений = 1) отправка всех отложенных запросов сразу.

Я что-то пропустил? Есть ли способ сказать iOS что-то вроде «этот запрос критичен по времени, не откладывайте его»?


person Jens    schedule 10.03.2016    source источник


Ответы (1)


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

person dgatwood    schedule 02.05.2016