/ / Як виконувати завантаження коду фону? - ios, швидкий, завантажити, фон

Як виконати завантаження коду фону? - ios, швидкий, завантажити, фон

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

  • Я називаю API, який дає мені json
  • Я зберігаю всі дані в основних даних
  • Я зберігаю всі URL-адреси зображень для завантаження в масив
  • Я зберігаю основні дані
  • Я починаю завантаження
    • Я завантажую 1 товар одночасно
    • Коли елемент закінчується, я зберігаю локальний шлях в Core Data і видаляє його з масиву URL-адрес
    • Я починаю нове завантаження
  • Коли все завершиться, я покажу користувальницький інтерфейс, який приховує панель просування

Я хочу дати користувачеві можливість поставитидодаток у фоновому режимі під час завантаження. Це добре працює на тренажері, але не на пристрої. Я думаю, що на тренажері працює завдяки великій кількості пам'яті Mac. У вас є пропозиції?

Відповіді:

0 для відповіді № 1

The NSURLSession клас підтримує фонове завантаження файлів. Він буде завантажувати ваші файли, навіть якщо ваш додаток закінчиться, і перезапустить вас у фоновому режимі, коли завантаження буде завершено, якщо буде потрібно.


0 для відповіді № 2

Щоб підтримувати фонові завантаження, потрібно налаштувати свій 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)