https://developer.apple.com/documentation/foundation/urlsessionconfiguration#2888288
配置对象,用于定义URL会话的行为和策略。
软件开发工具包
- iOS 7.0+
- macOS 10.9+
- tvOS 9.0+
- watchOS 2.0+
骨架
- 基础
概观
一个对象定义了使用对象上传和下载数据时要使用的行为和策略。上传或下载数据时,创建配置对象始终是您必须采取的第一步。您可以使用此对象来配置打算用于对象的超时值,缓存策略,连接要求和其他类型的信息。URLSessionConfiguration
URLSession
URLSession
在使用它来初始化会话对象之前,正确配置对象非常重要。会话对象会复制您提供的配置设置,并使用这些设置来配置会话。配置完成后,会话对象将忽略您对该对象所做的任何更改。如果您需要修改传输策略,则必须更新会话配置对象并使用它创建新对象。URLSessionConfiguration``URLSessionConfiguration``URLSession
注意在某些情况下,此配置中定义的策略可能会被NSURLRequest
为任务提供的对象指定的策略覆盖。在请求对象上指定的任何策略都会受到尊重,除非会话的策略更具限制性。例如,如果会话配置指定不应允许蜂窝网络,则该NSURLRequest
对象不能请求蜂窝网络。
有关使用配置对象创建会话的更多信息,请参阅URLSession
。
主题
创建会话配置对象
class var
default: URLSessionConfiguration
返回新创建的默认会话配置对象。
class var ephemeral: URLSessionConfiguration
返回不使用缓存,Cookie或凭证的持久性存储的会话配置。
class func background(withIdentifier: String)
返回一个会话配置对象,允许在后台执行HTTP和HTTPS上传或下载。
设置常规属性
var identifier: String?
配置对象的后台会话标识符。
var httpAdditionalHeaders: [AnyHashable : Any]?
与请求一起发送的附加头文件的字典。
var networkServiceType: NSURLRequest.NetworkServiceType
网络服务的类型。
var allowsCellularAccess: Bool
一个布尔值,用于确定是否应通过蜂窝网络进行连接。
var timeoutIntervalForRequest: TimeInterval
等待其他数据时使用的超时间隔。
var timeoutIntervalForResource: TimeInterval
资源请求应该允许的最大时间量。
var sharedContainerIdentifier: String?
应该下载后台URL会话中的文件的共享容器的标识符。
var waitsForConnectivity: Bool
一个布尔值,指示会话是否应等待连接变为可用或者立即失败。
设置Cookie政策
var httpCookieAcceptPolicy: HTTPCookie.AcceptPolicy
决定何时应该接受Cookie的策略常量。
var httpShouldSetCookies: Bool
一个布尔值,用于确定请求是否应包含来自Cookie存储的Cookie。
var httpCookieStorage: HTTPCookieStorage?
用于在此会话中存储Cookie的Cookie存储。
class HTTPCookieStorage
管理cookie存储的单一对象(共享实例)。
class HTTPCookie
表示HTTP cookie的对象。它是一个不可变的对象,从包含cookie属性的字典中初始化。
设置安全策略
var tlsMaximumSupportedProtocol: SSLProtocol
在此会话中进行连接时客户端应请求的最大TLS协议版本。
var tlsMinimumSupportedProtocol: SSLProtocol
协议协商期间应该接受的最小TLS协议。
var urlCredentialStorage: URLCredentialStorage?
提供身份验证凭据的凭证存储。
设置缓存策略
var urlCache: URLCache?
用于向会话中的请求提供缓存响应的URL缓存。
var requestCachePolicy: NSURLRequest.CachePolicy
一个预定义常量,用于确定何时从缓存中返回响应。
支持后台转移
var sessionSendsLaunchEvents: Bool
一个布尔值,指示在传输完成时是否应该在后台继续或启动应用程序。
var isDiscretionary: Bool
一个布尔值,用于确定是否可以根据系统的判断来调度后台任务以获得最佳性能。
var shouldUseExtendedBackgroundIdleMode: Bool
支持自定义协议
var protocolClasses: [AnyClass]?
在会话中处理请求的额外协议子类的数组。
class URLProtocol
一个NSURLProtocol
对象处理加载协议特定的URL数据。在NSURLProtocol
类本身是一个抽象类,可以为与特定URL方案的URL处理基础设施。您可以为您的应用支持的任何自定义协议或URL方案创建子类。
支持多路径TCP
使用多路径TCP提高网络可靠性
使用iOS设备中的可用收音机来提高应用程序的网络可靠性和性能。
var multipathServiceType: URLSessionConfiguration.MultipathServiceType
指定用于通过Wi-Fi和蜂窝接口传输数据的多路径TCP连接策略的服务类型。
enum URLSessionConfiguration.MultipathServiceType
指定多路径TCP使用的服务类型的常量。
设置HTTP策略和代理属性
var httpMaximumConnectionsPerHost: Int
同时连接到给定主机的最大数量。
var httpShouldUsePipelining: Bool
一个布尔值,用于确定会话是否应使用HTTP流水线。
var connectionProxyDictionary: [AnyHashable : Any]?
包含有关在此会话中使用的代理信息的字典。
支持连接变化
var waitsForConnectivity: Bool
一个布尔值,指示会话是否应等待连接变为可用或者立即失败。
已弃用的方法
class func backgroundSessionConfiguration(String)
返回一个会话配置对象,允许在后台执行HTTP和HTTPS上传或下载。
弃用
关系
继承自
符合
也可以看看
第一步
将网站数据存入内存
通过从URL会话创建数据任务,将数据直接接收到内存中。
上传数据到网站
将数据从应用程序发布到服务器。
在后台下载文件
创建在您的应用处于非活动状态时下载文件的任务
class URLSession
协调一组相关网络数据传输任务的对象。
class URLSessionTask
一个任务,比如下载一个特定的资源,由一个URL会话进行。