SessionManager
open class SessionManager
Responsible for creating and managing Request objects, as well as their underlying NSURLSession.
-
Defines whether the
MultipartFormDataencoding was successful and contains result of the encoding as associated values.- Success: Represents a successful
MultipartFormDataencoding and contains the newUploadRequestalong with streaming information. - Failure: Used to represent a failure in the
MultipartFormDataencoding and also contains the encoding error.
Declaration
Swift
public enum MultipartFormDataEncodingResult - Success: Represents a successful
-
A default instance of
SessionManager, used by top-level Alamofire request methods, and suitable for use directly for any ad hoc requests.Declaration
Swift
public static let `default`: SessionManager -
Creates default values for the “Accept-Encoding”, “Accept-Language” and “User-Agent” headers.
Declaration
Swift
public static let defaultHTTPHeaders: HTTPHeaders -
Default memory threshold used when encoding
MultipartFormDatain bytes.Declaration
Swift
public static let multipartFormDataEncodingMemoryThreshold: UInt64 -
The underlying session.
Declaration
Swift
public let session: URLSession -
The session delegate handling all the task and session delegate callbacks.
Declaration
Swift
public let delegate: SessionDelegate -
Whether to start requests immediately after being constructed.
trueby default.Declaration
Swift
open var startRequestsImmediately: Bool -
The request adapter called each time a new request is created.
Declaration
Swift
open var adapter: RequestAdapter? -
The request retrier called each time a request encounters an error to determine whether to retry the request.
Declaration
Swift
open var retrier: RequestRetrier? { get set } -
The background completion handler closure provided by the UIApplicationDelegate
application:handleEventsForBackgroundURLSession:completionHandler:method. By setting the background completion handler, the SessionDelegatesessionDidFinishEventsForBackgroundURLSessionclosure implementation will automatically call the handler.If you need to handle your own events before the handler is called, then you need to override the SessionDelegate
sessionDidFinishEventsForBackgroundURLSessionand manually call the handler when finished.nilby default.Declaration
Swift
open var backgroundCompletionHandler: (() -> Void)?
-
Creates an instance with the specified
configuration,delegateandserverTrustPolicyManager.Declaration
Swift
public init( configuration: URLSessionConfiguration = URLSessionConfiguration.default, delegate: SessionDelegate = SessionDelegate(), serverTrustPolicyManager: ServerTrustPolicyManager? = nil)Parameters
configurationThe configuration used to construct the managed session.
URLSessionConfiguration.defaultby default.delegateThe delegate used when initializing the session.
SessionDelegate()by default.serverTrustPolicyManagerThe server trust policy manager to use for evaluating all server trust challenges.
nilby default.Return Value
The new
SessionManagerinstance. -
Declaration
Swift
public init?( session: URLSession, delegate: SessionDelegate, serverTrustPolicyManager: ServerTrustPolicyManager? = nil)Parameters
sessionThe URL session.
delegateThe delegate of the URL session. Must equal the URL session’s delegate.
serverTrustPolicyManagerThe server trust policy manager to use for evaluating all server trust challenges.
nilby default.Return Value
The new
SessionManagerinstance if the URL session’s delegate matches;nilotherwise.
-
Creates a
DataRequestto retrieve the contents of the specifiedurl,method,parameters,encodingandheaders.Declaration
Swift
@discardableResult open func request( _ url: URLConvertible, method: HTTPMethod = .get, parameters: Parameters? = nil, encoding: ParameterEncoding = URLEncoding.default, headers: HTTPHeaders? = nil) -> DataRequestParameters
urlThe URL.
methodThe HTTP method.
.getby default.parametersThe parameters.
nilby default.encodingThe parameter encoding.
URLEncoding.defaultby default.headersThe HTTP headers.
nilby default.Return Value
The created
DataRequest. -
Creates a
DataRequestto retrieve the contents of a URL based on the specifiedurlRequest.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func request(_ urlRequest: URLRequestConvertible) -> DataRequestParameters
urlRequestThe URL request.
Return Value
The created
DataRequest.
-
Creates a
DownloadRequestto retrieve the contents the specifiedurl,method,parameters,encoding,headersand save them to thedestination.If
destinationis not specified, the contents will remain in the temporary location determined by the underlying URL session.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func download( _ url: URLConvertible, method: HTTPMethod = .get, parameters: Parameters? = nil, encoding: ParameterEncoding = URLEncoding.default, headers: HTTPHeaders? = nil, to destination: DownloadRequest.DownloadFileDestination? = nil) -> DownloadRequestParameters
urlThe URL.
methodThe HTTP method.
.getby default.parametersThe parameters.
nilby default.encodingThe parameter encoding.
URLEncoding.defaultby default.headersThe HTTP headers.
nilby default.destinationThe closure used to determine the destination of the downloaded file.
nilby default.Return Value
The created
DownloadRequest. -
Creates a
DownloadRequestto retrieve the contents of a URL based on the specifiedurlRequestand save them to thedestination.If
destinationis not specified, the contents will remain in the temporary location determined by the underlying URL session.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func download( _ urlRequest: URLRequestConvertible, to destination: DownloadRequest.DownloadFileDestination? = nil) -> DownloadRequestParameters
urlRequestThe URL request
destinationThe closure used to determine the destination of the downloaded file.
nilby default.Return Value
The created
DownloadRequest.
-
Creates a
DownloadRequestfrom theresumeDataproduced from a previous request cancellation to retrieve the contents of the original request and save them to thedestination.If
destinationis not specified, the contents will remain in the temporary location determined by the underlying URL session.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.On the latest release of all the Apple platforms (iOS 10, macOS 10.12, tvOS 10, watchOS 3),
resumeDatais broken on background URL session configurations. There’s an underlying bug in theresumeDatageneration logic where the data is written incorrectly and will always fail to resume the download. For more information about the bug and possible workarounds, please refer to the following Stack Overflow post:Declaration
Swift
@discardableResult open func download( resumingWith resumeData: Data, to destination: DownloadRequest.DownloadFileDestination? = nil) -> DownloadRequestParameters
resumeDataThe resume data. This is an opaque data blob produced by
URLSessionDownloadTaskwhen a task is cancelled. SeeURLSession -downloadTask(withResumeData:)for additional information.destinationThe closure used to determine the destination of the downloaded file.
nilby default.Return Value
The created
DownloadRequest.
-
Creates an
UploadRequestfrom the specifiedurl,methodandheadersfor uploading thefile.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func upload( _ fileURL: URL, to url: URLConvertible, method: HTTPMethod = .post, headers: HTTPHeaders? = nil) -> UploadRequestParameters
fileThe file to upload.
urlThe URL.
methodThe HTTP method.
.postby default.headersThe HTTP headers.
nilby default.Return Value
The created
UploadRequest. -
Creates a
UploadRequestfrom the specifiedurlRequestfor uploading thefile.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func upload(_ fileURL: URL, with urlRequest: URLRequestConvertible) -> UploadRequestParameters
fileThe file to upload.
urlRequestThe URL request.
Return Value
The created
UploadRequest.
-
Creates an
UploadRequestfrom the specifiedurl,methodandheadersfor uploading thedata.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func upload( _ data: Data, to url: URLConvertible, method: HTTPMethod = .post, headers: HTTPHeaders? = nil) -> UploadRequestParameters
dataThe data to upload.
urlThe URL.
methodThe HTTP method.
.postby default.headersThe HTTP headers.
nilby default.Return Value
The created
UploadRequest. -
Creates an
UploadRequestfrom the specifiedurlRequestfor uploading thedata.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func upload(_ data: Data, with urlRequest: URLRequestConvertible) -> UploadRequestParameters
dataThe data to upload.
urlRequestThe URL request.
Return Value
The created
UploadRequest.
-
Creates an
UploadRequestfrom the specifiedurl,methodandheadersfor uploading thestream.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func upload( _ stream: InputStream, to url: URLConvertible, method: HTTPMethod = .post, headers: HTTPHeaders? = nil) -> UploadRequestParameters
streamThe stream to upload.
urlThe URL.
methodThe HTTP method.
.postby default.headersThe HTTP headers.
nilby default.Return Value
The created
UploadRequest. -
Creates an
UploadRequestfrom the specifiedurlRequestfor uploading thestream.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@discardableResult open func upload(_ stream: InputStream, with urlRequest: URLRequestConvertible) -> UploadRequestParameters
streamThe stream to upload.
urlRequestThe URL request.
Return Value
The created
UploadRequest.
-
Encodes
multipartFormDatausingencodingMemoryThresholdand callsencodingCompletionwith newUploadRequestusing theurl,methodandheaders.It is important to understand the memory implications of uploading
MultipartFormData. If the cummulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.The
encodingMemoryThresholdparameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of theMultipartFormDatais below theencodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
open func upload( multipartFormData: @escaping (MultipartFormData) -> Void, usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, to url: URLConvertible, method: HTTPMethod = .post, headers: HTTPHeaders? = nil, queue: DispatchQueue? = nil, encodingCompletion: ((MultipartFormDataEncodingResult) -> Void)?)Parameters
multipartFormDataThe closure used to append body parts to the
MultipartFormData.encodingMemoryThresholdThe encoding memory threshold in bytes.
multipartFormDataEncodingMemoryThresholdby default.urlThe URL.
methodThe HTTP method.
.postby default.headersThe HTTP headers.
nilby default.encodingCompletionThe closure called when the
MultipartFormDataencoding is complete. -
Encodes
multipartFormDatausingencodingMemoryThresholdand callsencodingCompletionwith newUploadRequestusing theurlRequest.It is important to understand the memory implications of uploading
MultipartFormData. If the cummulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.The
encodingMemoryThresholdparameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of theMultipartFormDatais below theencodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
open func upload( multipartFormData: @escaping (MultipartFormData) -> Void, usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, with urlRequest: URLRequestConvertible, queue: DispatchQueue? = nil, encodingCompletion: ((MultipartFormDataEncodingResult) -> Void)?)Parameters
multipartFormDataThe closure used to append body parts to the
MultipartFormData.encodingMemoryThresholdThe encoding memory threshold in bytes.
multipartFormDataEncodingMemoryThresholdby default.urlRequestThe URL request.
encodingCompletionThe closure called when the
MultipartFormDataencoding is complete.
-
Creates a
StreamRequestfor bidirectional streaming using thehostnameandport.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@available(iOS 9.0, macOS 10.11, tvOS 9.0, *) @discardableResult open func stream(withHostName hostName: String, port: Int) -> StreamRequestParameters
hostNameThe hostname of the server to connect to.
portThe port of the server to connect to.
Return Value
The created
StreamRequest.
-
Creates a
StreamRequestfor bidirectional streaming using thenetService.If
startRequestsImmediatelyistrue, the request will haveresume()called before being returned.Declaration
Swift
@available(iOS 9.0, macOS 10.11, tvOS 9.0, *) @discardableResult open func stream(with netService: NetService) -> StreamRequestParameters
netServiceThe net service used to identify the endpoint.
Return Value
The created
StreamRequest. -
A default with cache policy instance of
SessionManager, used by top-level Alamofire request methods, and suitable for use directly for any ad hoc requests.Declaration
Swift
public static let defaultWithCachePolicy: SessionManager
SessionManager Class Reference