How to Download Files in the Background and Persist Them Before App Termination
Handling file downloads in the background is a common requirement for iOS apps — especially those dealing with large files or when users move away from the app. In this guide, you’ll learn how to implement a background file downloader using SwiftUI and URLSession
, and ensure downloaded files are moved to a permanent location even if the app is terminated.
đź§± Key Concepts
Before diving in, here’s what we’re going to implement:
- Background downloads using
URLSessionDownloadTask
. - Handling file moves to a permanent storage location (
Documents
directory). - Resuming app state after download completion (even post-termination).
- Integrating everything smoothly in a SwiftUI project.
đź”§ Step 1: Create a Download Manager
We begin by creating a singleton DownloadManager
class that configures a URLSession
for background tasks, handles download delegation, and moves files after download.
import Foundation
class DownloadManager: NSObject, ObservableObject, URLSessionDownloadDelegate {
static let shared = DownloadManager()
private var backgroundSession: URLSession!
private override init() {
super.init()
let config =…
Learn more 📥 Seamless Background Downloads in SwiftUI