반응형
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의 수행 과정
- Session Configuration을 결정하고, Session을 생성한다.
- 통신할 URL과 Request 객체를 설정한다.
- 사용할 Task를 결정하고 그에 맞는 Completion Handler나 Delegate 메소드들을 작성한다.
- 해당 Task를 실행한다.
- 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
반응형
'iOS > iOS' 카테고리의 다른 글
[iOS] UITextFieldDelegate (0) | 2022.04.17 |
---|---|
[iOS] Firebase를 활용한 로그인 (0) | 2022.01.13 |
[iOS] DispatchSourceTimer를 사용한 타이머 (0) | 2022.01.11 |
[iOS] UIView.animate를 활용한 애니메이션 처리 (0) | 2022.01.11 |
[iOS] Content Hugging과 Content Compression Resistance (0) | 2022.01.04 |
댓글