NSURLSessionConfiguration 定義了NSURLSession
中網(wǎng)絡(luò)請求的行為和策略摔刁,如超時(shí)時(shí)間、緩存策略等栈虚。當(dāng)使用NSURLSessionConfiguration
對(duì)象創(chuàng)建NSURLSession
對(duì)象時(shí)嗜诀,會(huì)使用NSURLSessionConfiguration
對(duì)象的一份拷貝,而之后對(duì)原NSURLSessionConfiguration
對(duì)象的修改則不會(huì)影響NSURLSession
對(duì)象妨蛹。若要修改則只能用更改后的NSURLSessionConfiguration
對(duì)象重新創(chuàng)建新的NSURLSession
對(duì)象。需要注意的是晴竞,NSURLSessionConfiguration
中的某些設(shè)置可能會(huì)被NSURLSessionTask
的 request 覆蓋蛙卤。
普通配置項(xiàng)
-
identifier
,用于唯一標(biāo)識(shí)一個(gè)后臺(tái)下載的 session噩死,當(dāng)系統(tǒng)重啟被自動(dòng)關(guān)閉的應(yīng)用時(shí)颤难,可以通過這個(gè)標(biāo)識(shí)符,重新創(chuàng)建 configuration 和 session 對(duì)象來恢復(fù)中斷的下載已维。 -
HTTPAdditionalHeaders
行嗤,一個(gè) dictionary,包含了需要額外添加到 session 中所有 request 的 header垛耳,如User-Agent
栅屏。不應(yīng)添加
Authorization
、Connection
堂鲜、Host
和WWW-Authenticate
既琴。如果 request 中已存在某一 header,則使用 request 中的值泡嘴,該 dictionary 默認(rèn)為空甫恩。 -
networkServiceType
,NSURLRequestNetworkServiceType
類型酌予,network service type 影響著操作系統(tǒng)對(duì)于網(wǎng)絡(luò)傳輸?shù)膬?yōu)先級(jí)排列磺箕,進(jìn)而影響系統(tǒng)電量、性能的消耗抛虫。默認(rèn)值是NSURLNetworkServiceTypeDefault
松靡。 -
allowsCellularAccess
,布爾值建椰,指明在移動(dòng)網(wǎng)絡(luò)下是否可發(fā)起請求雕欺。 -
timeoutIntervalForRequest
,請求的超時(shí)時(shí)間棉姐,默認(rèn)值為60秒屠列。 -
timeoutIntervalForResource
,所有資源下載或上傳完成的超時(shí)時(shí)間伞矩,中間請求失敗可重新請求笛洛,單位為秒,默認(rèn)時(shí)間為7天乃坤。 -
sharedContainerIdentifier
苛让,用于應(yīng)用擴(kuò)展與應(yīng)用間的后臺(tái)會(huì)話的擴(kuò)展容器沟蔑。
HTTP cookie 相關(guān)配置項(xiàng)
-
HTTPCookieAcceptPolicy
,接收 cookie 的策略狱杰,
NSHTTPCookieAcceptPolicy
類型瘦材,默認(rèn)值是
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain
-
HTTPCookieStorage
,對(duì)于default 和 background session仿畸,該屬性值為NSHTTPCookieStorage
的單例對(duì)象食棕,而 ephemeral session 的默認(rèn)值為一個(gè)私有的NSHTTPCookieStorage
對(duì)象,只將 cookie 保存在內(nèi)存中颁湖,如果 session 不想保存 cookie宣蠕,可將該屬性設(shè)為 nil。 -
HTTPShouldSetCookies
甥捺,布爾值抢蚀,指明請求時(shí)是否攜帶 cookie 信息。
安全相關(guān)配置項(xiàng)
-
TLSMaximumSupportedProtocol
镰禾,SSLProtocol 類型皿曲,請求支持的最高 TLS 版本,默認(rèn)值是 kTLSProtocol12吴侦,即 TLS1.2屋休。 -
TLSMinimumSupportedProtocol
,SSLProtocol 類型备韧,請求支持的最低 TLS 版本劫樟,默認(rèn)值是 kSSLProtocol3,即 SSL3.0织堂。 -
URLCredentialStorage
叠艳,管理需要驗(yàn)證的請求證書。
緩存策略配置項(xiàng)
-
URLCache
易阳,用于保存緩存響應(yīng)的NSURLCache對(duì)象附较,default session 默認(rèn)使用NSURLCache
的單例對(duì)象,background session 的默認(rèn)值為 nil潦俺,而 ephemeral session 的默認(rèn)值是一個(gè)私有的NSURLCache
對(duì)象拒课,數(shù)據(jù)只保存在內(nèi)存中。如果不想使用緩存事示,可直接設(shè)置該值為 nil早像。 -
requestCachePolicy
,枚舉類型NSURLRequestCachePolicy
很魂,指明了請求使用緩存響應(yīng)的策略扎酷。
// 默認(rèn)值,使用協(xié)議本身的緩存邏輯遏匆。
NSURLRequestUseProtocolCachePolicy
// 不使用現(xiàn)有緩存法挨,數(shù)據(jù)需要從原始地址加載。
NSURLRequestReloadIgnoringLocalCacheData
// 無論緩存是否過期幅聘,先使用本地緩存數(shù)據(jù)凡纳。如果緩存中沒有請求所對(duì)應(yīng)的數(shù)據(jù),那么從原始地址加載數(shù)據(jù)帝蒿。
NSURLRequestReturnCacheDataElseLoad
// 無論緩存是否過期荐糜,先使用本地緩存數(shù)據(jù)。如果緩存中沒有請求所對(duì)應(yīng)的數(shù)據(jù)葛超,那么放棄從原始地址加載數(shù)據(jù)暴氏,請求視為失敗。
NSURLRequestReturnCacheDataDontLoad
后臺(tái)下載配置項(xiàng)
-
sessionSendsLaunchEvents
绣张,布爾值答渔,說明在 session task 完成或者需要驗(yàn)證時(shí),是否在后臺(tái)運(yùn)行應(yīng)用侥涵。當(dāng)設(shè)為 YES 時(shí)沼撕,系統(tǒng)會(huì)自動(dòng)啟動(dòng)或運(yùn)行應(yīng)用,并調(diào)用 AppDelegate 中的方法
application:handleEventsForBackgroundURLSession:completionHandler:
芜飘,通過參數(shù)提供上述提到的唯一標(biāo)識(shí)后臺(tái)下載 session 的 identifier务豺。 -
discretionary
,布爾值嗦明,說明在下載時(shí)是否由系統(tǒng)統(tǒng)一安排資源笼沥。
自定義協(xié)議配置項(xiàng)
-
protocolClasses
,由自定義實(shí)現(xiàn)的NSURLProtocol
子類的 Class 對(duì)象組成的數(shù)組娶牌,配置了 session 支持的自定義協(xié)議奔浅。
HTTP相關(guān)配置項(xiàng)
-
HTTPMaximumConnectionsPerHost
,session 內(nèi)一個(gè)域名的最大同時(shí)連接數(shù)裙戏。 -
HTTPShouldUsePipelining
乘凸,布爾值,說明 session 內(nèi)的 task 是否使用 HTTP pipelining累榜。 -
connectionProxyDictionary
营勤,字典類型,保存了連接代理的相關(guān)信息壹罚,默認(rèn)為 NULL葛作。
內(nèi)置的配置對(duì)象
通過類方法,NSURLSessionConfiguration
提供了適用于不同情況的配置對(duì)象猖凛,它們的一些配置屬性設(shè)置了不同的默認(rèn)值赂蠢。
-
+ defaultSessionConfiguration
,默認(rèn)的配置對(duì)象辨泳,持久化存儲(chǔ)緩存虱岂,證書玖院,cookie。 -
+ ephemeralSessionConfiguration
第岖,不持久化存儲(chǔ)緩存难菌,證書,cookie的配置蔑滓。所有相關(guān)內(nèi)容只保存在內(nèi)存中郊酒,當(dāng) session 失效或應(yīng)用終止,所有內(nèi)容被清空键袱。該配置可提高私密性燎窘,因?yàn)椴粫?huì)向硬盤上寫入數(shù)據(jù)。 -
+ backgroundSessionConfigurationWithIdentifier:
蹄咖,適用于在后臺(tái)上傳和下載文件的網(wǎng)絡(luò)請求褐健。當(dāng)應(yīng)用被系統(tǒng)終止并重啟,傳入的參數(shù) identifier 可用來重新創(chuàng)建配置和 session 對(duì)象比藻,以便恢復(fù)中斷的下載任務(wù)铝量。如果是用戶主動(dòng)終止程序,則不會(huì)有上述行為银亲。