A URL session task that stores downloaded data to a file.
- iOS 7.0+
- macOS 10.9+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
URLSession is a concrete subclass of
URLSession, which provides most of the methods for this class.
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 in the suspended state or 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. The only errors your delegate receives through the
Session(_: task: did Complete With Error:)
errorparameter are client-side errors, such as being unable to resolve the hostname or connect to the host. To check for server-side errors, inspect the
responseproperty of the
taskparameter received by this callback.