2016-12-20 2 views
1

Я разрабатываю приложение, которое требует загрузки большого количества данных при первом запуске (около 1 гб изображений). В настоящее время я использую библиотеку MZDownloadManager для выполнения загрузки. Библиотека реализует фоновые режимы для загрузки, и я даже включил ее в возможности моей цели. В принципе у меня есть такой сценарий:Как выполнять загрузку кода фона?

  • я называю API, который дает мне JSON
  • Я сохранить все данные в Core Data
  • Я сохранить все URLs изображений для загрузки в массиве
  • откладываю Основные данные
  • Я начинаю загрузку
    • загрузить 1 пункт в то время
    • Когда его эм закончен, я сохраняю локальный путь в Core Data и удалить его из массива URLs
    • Я начинаю новую загрузку
  • Когда все закончено, я показываю интерфейс скрывает индикатор

Я хочу дать пользователю возможность разместить приложение в фоновом режиме во время загрузки. Он отлично работает на Simulator, но не на устройстве. Я думаю, что на Simulator работает из-за большого объема памяти Mac. Есть ли у вас предложения?

+0

Вы можете профилировать приложение и посмотреть, если он использует слишком много ресурсов процессора или памяти. Я знаю, что существует ограничение на то, сколько работы вы можете сделать при каждом фоновом вызове, и, возможно, это проблема. У Fyi есть другой менеджер загрузки, если у этого есть ошибка. https://github.com/Gurpartap/Cheapjack – GregP

ответ

0

Класс NSURLSession поддерживает загрузку файлов с фоновым файлом. Он загрузит ваши файлы, даже если ваше приложение будет завершено, и перезапустит вас в фоновом режиме после завершения загрузки, если потребуется.

0

Для поддержки загрузки фонограмм необходимо настроить свой объект NSURLSession. Чтобы настроить сеанс, сначала необходимо создать объект NSURLSessionConfiguration и установить несколько свойств для соответствующих значений. Затем вы передаете этот объект конфигурации соответствующему методу инициализации NSURLSession при создании сеанса.

Для создания объекта конфигурации, который поддерживает фоновую загрузку выглядит следующим образом:

  • Сначала нужно создать объект конфигурации, используя backgroundSessionConfigurationWithIdentifier: метод NSURLSessionConfiguration.
  • Настройте любые другие свойства, например sessionSendsLaunchEvents, и discretionary объекта конфигурации.
  • Используйте объект конфигурации, чтобы создать свой NSURLSession объект

Пример: -

let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("bgSessionConfiguration") 
    configuration.discretionary = true 
    configuration.allowsCellularAccess = true //default true 
    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil) 
Смежные вопросы