URL Loading System?
這一章節(jié): 主要講解iOS系統(tǒng)是如何使用標準的Internet協(xié)議與url交互并與服務(wù)器通信。
1. 你可以通過標準的HTTPS協(xié)議, 或者你自定義的協(xié)議通過URL(資源訪問標識).?
2. 由于加載數(shù)據(jù)的過程是異步執(zhí)行的, 如果響應(yīng)體或者錯誤返回, APP應(yīng)該保持響應(yīng).
3. 你通過NSURLSession類可以創(chuàng)建NSURLSessionTask多個類的實例. 可以獲取數(shù)據(jù), 下載文件, 上傳數(shù)據(jù), 上傳文件.
4.你可以通過?NSURLSessionConfiguration這個類來控制cookie , cache, 或者蜂窩數(shù)據(jù)建立連接等問題.
5.你能通過一個session 反復的創(chuàng)建tasks. 通過創(chuàng)建不同NSURLSessionConfiguration?對的session初始化. 有針對的對cookie, cache 等進行不同的設(shè)置.

上面的這種圖, 簡單的實現(xiàn)了瀏覽器的無痕瀏覽模式.
Fetching Website Data into Memory
1.NSURLSessionDataTask用于小型數(shù)據(jù)和服務(wù)器交互.
2.?NSURLSessionDownloadTask用于大量的數(shù)據(jù)和服務(wù)器交互并寫入系統(tǒng)文件.
3. 如果您的需求相當?shù)暮唵? 可以通過sharedSession 方法創(chuàng)建session實例.
例如:

4. 如果您希望委托回調(diào)與傳輸進行交互, 可以通過NSURLSessionConfiguration實例,并指定NSURLSessionDelegate 這個代理對象.
例如:

5.?dataTask 是在暫停的情況下創(chuàng)建的, 這種情況下你需要調(diào)用resume.
Note:
? ? 注意不要創(chuàng)建過多的session對象,同類的情況盡量公用.
NSURLSession
An object that coordinates a group of related network data transfer tasks.
我的翻譯是:(通過該對象來協(xié)調(diào)一組網(wǎng)絡(luò)傳輸任務(wù)對象)
Overview
通過該類和其他類配合使用, 可以通過簡單的API調(diào)用, 就能獲取內(nèi)容. 并且還提供了非常豐富的代理回調(diào)方法. 例如: 證書校驗, 后臺下載功能, 暫停下載等功能.
支持的URL schemes:data,?file,?ftp,?http, and?https
傳輸類型支持:代理服務(wù)器,SOCKS網(wǎng)關(guān)(通過用戶的首選項配置)
支持的HTTP版本:HTTP/1.1, SPDY, and HTTP/2 protocols.RFC 7540
需要為協(xié)議協(xié)商者支持ALPN或NPN的服務(wù)器
通過這個類:NSURLProtocol. 我們也能自定義自己的協(xié)議.
第一篇:session初始化:
1.不能傳輸大量的數(shù)據(jù).
2.無法定制連接行為.
3.無法對HTTPS 進行證書認證.4.不能執(zhí)行后臺的下載任務(wù).
1.基于磁盤的持久緩存
2.并將憑據(jù)存儲在用戶的密鑰鏈中。它還將cookie(默認情況下)存儲在與NSURLConnection和NSURLDownload類相同的共享cookie存儲中。
ephemeralSessionConfiguration?
1.無痕瀏覽模式. 對APP 的性能有一定的損耗.
note: 該對象會被APP 強引用. 可以調(diào)用invalidates 這個方法釋放對象.
? ? ?session支持的任務(wù)類型:
簡短的data 數(shù)據(jù).
文件上傳任務(wù), 支持后臺上傳.
下載任務(wù).
note: session是異步的, 可以通過block, 和delegate兩種方式返回.另外還提供進度屬性查詢.還支持取消、重新啟動或恢復和暫停任務(wù),并提供恢復暫停、取消或失敗下載的能力。
第二篇: APP 安全傳輸(ATS)
?iOS 9.0?session 所使用的HTTP連接都啟用了ATS.ATS要求HTTP連接使用HTTPS (RFC 2818)。
About Information Property List Files配置表. 有需要可以細看.
第三篇: session的代理回調(diào).?
? ? ? 略
第四篇:遵循NSCopying協(xié)議
? ? ? 1.當你的應(yīng)用程序復制一個會話或任務(wù)對象時,你會得到相同的對象。
? ? ? 2.當你的應(yīng)用程序復制一個配置對象時,你會得到一個可以獨立修改的新拷貝。
第五篇:遵循NSCopying協(xié)議
? ? ? 1. 線程安全的.
第六篇: session的管理
1.finishTasksAndInvalidate:?使會話無效,允許完成任何未完成的任務(wù)。
2.flushWithCompletionHandler:將cookie和憑據(jù)刷新到磁盤,清除臨時緩存,并確保未來的請求發(fā)生在新的TCP連接上。
3.getTasksWithCompletionHandler:使用會話中的所有數(shù)據(jù)、上傳和下載任務(wù)異步調(diào)用完成回調(diào)。
4.getAllTasksWithCompletionHandler:異步調(diào)用一個會話中所有任務(wù)的完成回調(diào)。
5.invalidateAndCancel:?取消所有未完成的任務(wù),然后使會話無效。
?6.resetWithCompletionHandler:清空所有cookie、緩存和憑據(jù)存儲,刪除磁盤文件,將正在進行的下載刷新到磁盤,并確保未來的請求發(fā)生在新的套接字上。