본문 바로가기
iOS/iOS

[iOS] URLSession을 사용한 통신

by 원만사 2022. 1. 11.
반응형

 

 URLSession은 iOS 앱 통신에서 서버와의 데이터 교류를 위해서 사용되는 API이다. URLSession은 HTTP를 포함한 몇 가지 프로토콜을 지원하고, 인증, 쿠키 관리, 캐시 관리 등을 지원한다. 기본적으로 request, response 구조를 가지고 있다. 

 

URLSessionConfiguration

  • URL 세션에 대한 동작 및 정책을 정의하는 객체이다.
  • Configuration을 생성할 때는 URLSession 정책에 따라 default, ephemeral, backgorund 3가지 형태로 생성할 수 있다.
    • default : 기본적인 session으로 디스크 기반 캐싱을 지원한다.
    • ephemeral : 어떠한 데이터도 저장하지 않는 형태의 세션이다. 쿠키나 캐시를 저장하지 않는 정책을 가져갈 때 사용한다. (ex. 크롬의 시크릿 모드)
    • background : 백그라운드에서 업로드 또는 다운로드가 허용되는 세션

 

URLSessionTask

  • Task 객체는 일반적으로 Session 객체가 서버로 요청을 보낸 후, 응답을 받을 때 URL 기반의 내용들을 받는 역할을 한다. 아래 종류에 해당하는 Task가 존재한다.

 

① DataTask

  • 다운로드한 데이터를 메모리의 앱으로 직접 반환하는 URLSessionTask.
  • Data 객체를 통해 주고받는 task
  • 백그라운드 세션에 대한 지원이 되지 않는다. 
  • URL 요청을 실시하고 완료 시 핸들러를 호출하는 Task 형식이다.
  • Task가 실행된 후 핸들러가 실행되기 때문에 탈출 Closure 형태로 받아와야 한다. 

 

② UploadTask 

  • 네트워크에 데이터를 업로드하는 URLSessionTask
  • DataTask와 달리 업로드 작업을 사용하여 백그라운드에서 콘텐츠를 업로드할 수 있다.

 

③ DownloadTask

  • 다운로드한 데이터를 파일에 저장하는 URLSessionTask 
  • 백그라운드 세션에서 다운로드 작업을 사용하는 경우 앱이 일시 중단된 상태이거나 실행되지 않는 경우에도 계속된다.

 

URLSession의 수행 과정

  1. Session Configuration을 결정하고, Session을 생성한다.
  2. 통신할 URL과 Request 객체를 설정한다.
  3. 사용할 Task를 결정하고 그에 맞는 Completion Handler나 Delegate 메소드들을 작성한다.
  4. 해당 Task를 실행한다.
  5. Task 완료 후 Completion Handler 클로저가 호출 된다. 

 

 

 

References

- https://greatpapa.tistory.com/66

- https://hcn1519.github.io/articles/2017-07/iOS_URLSession

- https://developer.apple.com/documentation/foundation/urlsession

반응형

댓글