A URL session task that stores downloaded data to file.
- iOS 7.0+
- macOS 10.9+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
Download tasks directly write the server’s response data to a temporary file, providing your app with progress updates as data arrives from the server. When you use download tasks in background sessions, these downloads continue even when your app is suspended or is otherwise not running.
You can pause (cancel) download tasks and resume them later (assuming the server supports doing so). You can also resume downloads that failed because of network connectivity problems.
Download Delegate Behavior
When you use a download task, your delegate receives several callbacks unique to download scenarios.
During download, the session periodically calls the delegate’s
urlmethod with status information.
Session(_: download Task: did Write Data: total Bytes Written: total Bytes Expected To Write:)
Upon successful completion, the session calls the delegate’s
urlmethod or completion handler. In that method, you must either open the file for reading or move it to a permanent location in your app’s sandbox container directory.
Session(_: download Task: did Finish Downloading To:)
Upon unsuccessful completion, the session calls the delegate’s
urlmethod or completion handler. Unlike
Session(_: task: did Complete With Error:)
URLSession, a download task reports server-side errors reported through HTTP status codes into corresponding
NSErrorobjects. These errors are shown in Table 1.