iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

一個令我自豪的App完成之路系列 第 15

URLSession 介紹 Day 15

今天來介紹使用API會用到NSURLSession

其實NSURLSession 與 URLSession是相同的

只是一個是OC的名稱,一個是Swift的名稱


Session(會話層)

是什麼?

原本是指OSI網路分層中的會話層

會話層負責什麼樣子的東西呢?

→ 建立與別的端點的連線、維護、刪除


我們使用URLSession做些什麼?

能夠透過URLSession與網路互動

包括:下載以及上傳

URLSession能透過Task作為要與網路互動的方式

URLSessionDataTask

URLSessionDownloadTask

URLSessionUploadTask

Task物件能夠

  • fetch data
  • download files
  • upload files & data

對應上面三個Task

這邊做個簡單的DataTask的code示範:

這個範例會使用shared,什麼是shared?

URLSession.shared為一個 Singleton,為Default的Configuration,故沒有Configuration 物件(後面會談到),因為並非客製化的URLSession,會是使用上最簡單的一種方式

URLSession.shared.dataTask(with:url){(data,response,error) in
	//檢驗下載下來的data是不是跟你所想的一樣是個JSON
	if let data = data, let content = String(data:data, encoding: .utf8){
		// 會印出跟你所想一樣的JSON
		print(content)
		}

	}

URLSession裡面還包括了URLSessionConfiguration

URLSessionConfiguration是一個物件,用來作為設定:

  • 使用Cache、Cookie
  • 是否使用Cellular Data

這些設定都源自於Configuration的三大狀態:

  • Default:使用Cache,Cookie
  • Ephemeral:不使用Cache,Cookie
  • background:能在背景狀態中下載上傳

看到下面的圖片,能夠知道一個Session其實能夠不只使用一個Task

這張圖為一般瀏覽與私密瀏覽的區別,都是透過URLSession建立,但是私密瀏覽瀏覽不會儲存

Cache,所以在URLSessionConfiguration的設定下會是.ephemeral

https://i.imgur.com/MPK5NQa.png


參考連結
Apple Developer Documentation

https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E6%95%99%E5%AE%A4/%E7%86%9F%E7%B7%B4ios-sdk%E5%85%A7%E5%BB%BA%E7%9A%84delegate-%E4%BA%8C%E9%83%A8%E6%9B%B2-e6fd5a8dd489


上一篇
[插播]檢討文!Day 14
下一篇
JSONDecoder 介紹 Day 16
系列文
一個令我自豪的App完成之路32

尚未有邦友留言

立即登入留言