iOS Swift/iOS Swift - 기초

[iOS/Swift] URLSession Task 네트워크 api 통신

주니어코더 2023. 2. 28. 17:34

 

 

 

 

 

 

Swift 네트워크 통신

feat. URLSession , URLSessionTask

 

 

 

 

 

iOS에서 http 네트워크 통신을 위해서는

URLSessionURLSessionTask 를 사용해야 한다!

라이브러리인 Alamorfire와 moya 도

URLSession을 래핑한것으로 URLSession을 알아야

수월하게 사용가능하다

 

 

먼저 URLSession, URLSessionTask 하는 일과 속성을 알아보자!

 

 

 

 

 

📌   URLSession  

iOS 와 서버 간의 http 프로토콜을 지원하며 Request와 Response 구조를 가진다.

URLSession은 여러 개의 URLSessionTask를 생성하여 이를 통해 서버와 통신을 하고, Delegate로 네트워크의 과정을 확인하는 형태이다.

 

  • URLSession은 네트워크 관련 클래스로 URL구조에서 데이터를 다운로드하고 업로드 하는 API를 제공한다
  • 앱이 실행되지 않거나 중단된 동안 백그라운드에서 다운로드를 수행
  • 인증을 지원하고 리디렉션 및 작업 완료와 같은 이벤트를 수신

 

 

 

 

 

🧷   URLSession 의 속성  

- URLSession은 configuration이라는 속성 3가지를 가진다.

 

 

 

✔️   .default   - 기본 통신으로 디스크 기반 캐싱을 지원합니다.

let defaultSession = URLSession(configuration: .defualt)

 

 

 

✔️   .ephemeral  - 쿠키나 캐시를 저장하지 않는 정책을 가져갈 때 사용합니다. (ex. Safari의 개인정보보호 모드)

let ephemeralSession = URLSession(configuration: .ephemeral)

 

 

 

✔️  .background  - 앱이 백그라운드에 있는 상황에서 콘텐츠 다운로드, 업로드를 할 때 사용합니다.

let backgroundSession = URLSession(configuration: .background)

 

 

 

 

 

📌   URLSessionTask     

URLSession 작업 하나를 나타내는 추상 클래스이다.

 

 

 

 

 

🧷   URLSessionTask 의 작업 유형

- URLSessionTask는 4가지 작업유형을 제공한다

 

 

1️⃣ URLSessionDataTask

 - 서버에서 메모리로 데이터를 받아오는 작업 수행한다

 - 백그라운드에서는 지원되지 않는다

 

 

 

2️⃣ URLSessionUploadTask

 - 서버에서 메모리로 데이터를 받아오는 작업 수행한다

 - DataTask 보다 Upload 에 특화되어 있으며, file 형태 업로드할 때 사용한다

 - 백그라운드에서 업로드를 지원한다

 

 

 

3️⃣ URLSessionUploadTask

 - file형태의 데이터를 다운받을 때 사용한다

 - 백그라운드에서 업로드를 지원한다

 

 

 

4️⃣  URLSessionStreamTask

 - 양방향의 TCP/IP 연결을 통해 메시지를 교환할 때 사용한다

 

 

 

 

 

 

 

 

참조 : https://developer.apple.com/documentation/foundation/urlsessiontask

 

URLSessionTask | Apple Developer Documentation

A task, like downloading a specific resource, performed in a URL session.

developer.apple.com

 

반응형