Фоновая загрузка NSURLSession — нужно включить фоновые режимы?

Я создаю экземпляр NSURLSession для нескольких фоновых загрузок, например:

  sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:myIdentifier];

Кажется, по большей части все работает нормально, но мне интересно, нужно ли мне добавить в p.list фоновую клавишу Fetch, если все, что я делаю, это фоновые загрузки, а не загрузки? Я не могу найти документацию, в которой говорится, что я должен или не должен. В частности, в XCode 5 + я хотел бы знать, следует ли в разделе «Возможности»> «Фоновые режимы» включить или отключить фоновую выборку, если все, что я делаю, это фоновые загрузки, обратите внимание, что я читаю ответ после завершения загрузки, что может считаться «загрузкой».


person Oscar Gomez    schedule 16.03.2015    source источник


Ответы (1)


Официальное руководство Фоновое выполнение объявляет три тип фонового исполнения:

  1. Выполнение задач конечной продолжительности – использование метода UIApplication
    beginBackgroundTaskWithName:expirationHandler: для выполнения задачи конечной продолжительности.
  2. Загрузка контента в фоновом режиме — использование NSURLSession для загрузки контента. NSURLSession, предоставляемый вашим приложением, запускается на отдельном демоне системного уровня и после завершения возвращается к приложению с помощью обработчика завершения. (Ваша вышеупомянутая реализация)
  3. Реализация длительных задач. Задачи, которые должны выполняться в течение длительного времени, обрабатываются в этой категории, например аудио, voip, местоположение, процессы загрузки, обновление содержимого. Для таких задач требуется специальный ключ UIBackgroundModes, упомянутый в info.plist.

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

person Adil Soomro    schedule 16.03.2015