Вы звоните
session.downloadTask(with: url) { (data, response, error) in
Это означает, что URLSession delegate
игнорируется, поскольку у задачи загрузки есть обработчик завершения, который используется вместо него. Итак, вы видите ожидаемое поведение.
Если вы хотите использовать делегата, звоните
session.downloadTask(with: url)
и выполните все в делегате, включая получение загруженного файла.
С другой стороны, если ваша цель - просто показать прогресс, делегат не нужен. С этой целью задача загрузки реализует объект progress
. Пример:
let task = session.downloadTask(with:url) { fileURL, resp, err in
// whatever
}
// self.prog is a UIProgressView
self.prog.observedProgress = task.progress
task.resume()