文檔
URL Session Programming Guide
iOS 頂層框架 Foundation 提供了一系列的類,支持通過使用某些標準應(yīng)用層協(xié)議的 URL 獲取數(shù)據(jù),它們被統(tǒng)稱為 URL Loading System鸿竖。默認支持的協(xié)議包括 ftp://
振湾、http://
硝训、https://
科平、file:///
和 data://
,當然還可以擴展自定義協(xié)議崭别。整個 URL Loading System 中的類冬筒,可以分為負責(zé)請求數(shù)據(jù)主要功能的 URL Loading 和可以修改其行為的輔助類,輔助類又可以大致分為五類:Protocol Support茅主、Authentication and Credentials舞痰、Cookie Storage、Configuration Management 和 Cache Management诀姚,如圖所示
可以通過這些類完成獲取數(shù)據(jù)响牛,下載文件,上傳文件等主要功能赫段。從 iOS 7 和 OS X v10.9 開始呀打,推薦使用新的 NSURLSession。而老版本的 iOS 和 OS X 則使用 NSURLConnection
瑞佩,另外老版本的 OS X 可通過 NSURLDownload
實現(xiàn)下載文件聚磺。
Networking Concepts
介紹網(wǎng)絡(luò)相關(guān)的基本知識
Networking Overview
該篇主要介紹了 iOS 開發(fā)網(wǎng)絡(luò)編程中一些需要注意的地方:
- 網(wǎng)絡(luò)請求的超時時間不應(yīng)設(shè)置過短,而是應(yīng)在界面上提供取消操作的接口炬丸。
- 頻繁的發(fā)起網(wǎng)絡(luò)請求會更快的消耗設(shè)備的電量并影響設(shè)備的性能,根據(jù)用戶可能用到的數(shù)據(jù)量蜒蕾,一個請求應(yīng)盡可能獲取足夠的數(shù)據(jù)稠炬。但同時也要避免下載過多的用戶未用到的數(shù)據(jù),從而造成設(shè)備性能和用戶流量的浪費咪啡。要在這兩個原則間找到一個平衡點首启。(例如在分頁獲取列表數(shù)據(jù)時,每頁記錄數(shù)的選擇就要參考以上原則)
- 對請求的資源要盡可能的考慮緩存撤摸,以達到節(jié)省流量毅桃、CPU 資源和電量的目的褒纲。可根據(jù)當前網(wǎng)絡(luò)狀態(tài)的不同而使用不同的緩存策略钥飞。
- 對當前網(wǎng)絡(luò)狀態(tài)的判斷是不可靠的莺掠,不能通過判斷網(wǎng)絡(luò)狀態(tài)未連接而拒絕發(fā)起請求读宙,永遠都要去嘗試發(fā)起網(wǎng)絡(luò)請求彻秆,可在失敗回調(diào)中通過判斷網(wǎng)絡(luò)狀態(tài)來返回相應(yīng)的提示信息。
- iOS 支持 HTTPS 協(xié)議结闸,只要將請求的協(xié)議改為
https://
即可唇兑。可通過 Security Framework桦锄,信任自簽名的證書或安全的改寫信任鏈扎附。 - 可通過 NSMutableURLRequest 的屬性
allowsCellularAccess
來禁止在移動流量的網(wǎng)絡(luò)中發(fā)起請求。 - 若程序中需要自己處理DNS時结耀,盡量使用 CFHost 等 API留夜。
- 運營商通過實現(xiàn) DNS64 和 NAT64 來達到對 IPv4 和 IPv6 的兼容。當客戶端查詢 DNS 時饼记,DNS64 首先查找域名是否有對應(yīng)的 IPv6 地址香伴,若有則返回,若沒有則查找 IPv4 地址具则,然后通過添加前綴的方式將 IPv4 地址合成為一個 IPv6 地址并返回即纲。當客戶端向查到的 IPv6 地址發(fā)送請求時,NAT64 網(wǎng)關(guān)提供了對合成的 IPv6 地址和 IPv4 地址之間的翻譯博肋。蘋果公司要求應(yīng)用必須兼容 IPv6低斋,因為不兼容會導(dǎo)致 DNS64 和 NAT64 出現(xiàn)問題。使用上層的網(wǎng)絡(luò)框架匪凡,如 webkit膊畴、URL Loading System、CFNetwork 并且不直接請求 IPv4 的地址的話病游,默認就是兼容的唇跨。出現(xiàn)不兼容的主要情況就是直接傳入了 IPv4 的地址或使用了底層框架中只支持 IPv4 的 API。
Networking Programming Topics
網(wǎng)絡(luò)編程高級內(nèi)容
工具
Xcode 模擬不同網(wǎng)絡(luò)環(huán)境的工具 Network Link Conditioner