URLSession, URLSessionTask에 대한 내용이 담긴 링크를 아래에 남기겠습니다.
URLSession
https://developer.apple.com/documentation/foundation/urlsession
https://velog.io/@panther222128/URLSession-6ikv1hbi
URLSessionTask
https://developer.apple.com/documentation/foundation/urlsessiontask
https://velog.io/@panther222128/URLSessionTask
https://developer.apple.com/documentation/foundation/url_loading_system
"Interact with URLs and communicate with servers using standard Internet protocols."
표준 인터넷 프로토콜을 사용해URL과 상호작용하고 서버와 소통하는 것에 대한 내용입니다.
URL Loading System은 https나 직접 생성한 커스텀 프로토콜을 사용하는 것을 통해 URL에 의해 확인된 리소스에 접근할 수 있도록 합니다. 비동기로 작동하며, 앱이 즉각 대응할 수 있도록 하고 데이터가 도착할 때 들어오는 데이터나 에러를 다룰 수 있도록 합니다.
하나 이상의 URLSessionTask
인스턴스를 생성하기 위해 URLSession
인스턴스를 사용하게 될 것입니다. 이 인스턴스는 앱에 데이터를 불러오거나 반환할 수 있도록 하고, 파일을 다운로드하는 것도 가능하게 합니다. 또한, 원격 저장소에 데이터 혹은 파일을 업로드할 수 있도록 하기도 합니다. 세션을 설정하기 위해 URLSessionConfiguration
객체를 사용하면 됩니다. 이 객체는 캐시와 쿠키를 어떻게 사용할지를 제어하거나 cellular 네트워크에 연결을 허용할 것인지를 결정할 수 있도록 합니다.
작업을 생성하기 위해 하나의 세션을 반복적으로 사용할 수 있습니다. 예를 들어 웹 브라우저는 일반적인 것과 private 브라우징 사용으로 분리할 것입니다. 여기서 private 세션은 데이터를 캐시하지 않는다는 것을 의미합니다. 아래 그림은 어떻게 두 세션이 이러한 설정과 함께 여러 작업을 생성할 수 있는지를 보여줍니다.
Figure 1 Creating tasks from URL sessions
각 세션은 주기적인 업데이트 (혹은 에러)를 받기 위해 딜리게이트에 연관됩니다. 기본값 딜리게이트는 구현한 컴플리션 핸들러 블록을 호출합니다. 만약 커스텀 딜리게이트를 제공하길 선택했다면 이 블록은 호출되지 않습니다.
백그라운드에서도 실행될 수 있도록 세션을 설정할 수도 있습니다. 앱이 중지되어 있는 동안 시스템은 계속해서 데이터를 다운로드하게 될 것이고, 그 결과를 전달하기 위해 앱을 깨울 것입니다.