Выбор ответа Middle Сеть, Codable и хранение обновлено
Загрузка видео в фоне
Вопрос
Пользователь начал загрузку большого видео и свернул приложение. Как дать загрузке завершиться?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Фоновая сессия URLSessionConfiguration.background и upload из файла. Фоновая сессия передаёт задачу системному демону, и загрузка продолжается, даже если приложение приостановлено или выгружено.
Варианты ответа
- Обычный
URLSession.sharedвнутриTaskс низким приоритетом в фоне - Фоновая сессия
URLSessionConfiguration.backgroundи upload из файлаправильный ответ beginBackgroundTaskна всё время загрузки, сколько бы она ни шла- Запретить приложению уходить в фон ключом в Info.plist на время загрузки
Разбор
Фоновая сессия передаёт задачу системному демону, и загрузка продолжается, даже если приложение приостановлено или выгружено. По завершении система разбудит приложение и вызовет handleEventsForBackgroundURLSession. Upload в фоне поддерживается только из файла. Обычная сессия остановится вместе с приложением. beginBackgroundTask даёт лишь короткое время на завершение работы. Запретить уход в фон нельзя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Сеть, Codable и хранение»
- Куда сохранять кеш картинок на диске
- Свой init(from:) в Codable
- HTTP-кеш в URLSession
- Доступность элементов Keychain
- Задача на Swift: повтор запроса с экспоненциальной задержкой
- Один битый элемент ломает весь массив
- Какое хранилище выбрать на iOS
- Отсутствующее поле при декодировании