Apple Developer - URLSession

URLSession

네트워크 데이터 전송 작업 그룹을 조정하는 클래스입니다

class URLSession: NSObject

개요

URLSession 클래스 및 관련 클래스는 URL로 표시된 엔트포인트에서 데이터를 다운로드하고 엔드포인트에 데이터를 업로드하기 위한 API를 제공합니다. 당신이 만든 앱은 이 API를 사용하여 앱이 실행되고 있지 않거나, iOS에서 앱이 일시 중단된 동안 백그라운드 상태에서도 다운로드를 수행할 수 있습니다. URLSessionDelegateURLSessionTaskDelegate를 사용하여 인증을 지원하고 리디렉션 및 작업 완료와 같은 이벤트를 수신할 수 있습니다.

Note URLSession API에는 참조 문서 자체를 읽는 경우 명확하지 않을 수 있는 상당히 복잡한 방식으로 함께 작동하는 다양한 클래스가 포함됩니다. API를 사용하기 전에 URL 로딩 시스템 문서를 읽어주세요. Essentials, Uploading, Downloading 섹션의 문서는 URLsession을 사용하여 일반적인 작업을 수행하는 예를 제공합니다.

당신이 만든 앱은 관련 데이터 전송 작업 그룹을 조정하는 각각의 URLSession 인스턴스를 하나 이상 만듭니다. 예를 들어 웹 브라우저를 생성하는 경우 앱은 탭 또는 창 하나의 세션을 생성하거나 대화형 사용을 위한 세션과 백그라운드 다운로드를 위한 세션을 생성할 수 있습니다. 각 세션 내에서 앱은 일련의 작업을 추가하며, 각 작업은 특정 URL에 대한 요청을 나타냅니다 (필요할 경우 HTTP 리디렉션을 따릅니다)

URLSession의 유형

주어진 URLSession 내의 작업은 연결 동작을 정의하는 공통 세션 구성 개체를 공유합니다. 단일 호스트에 대한 최대 동시 연결 수, 연결이 셀룰러 네트워크를 사용할 수 있는지 여부 등이 있습니다.

URLSession에는 기본 요청에 대한 shared(구성 개체가 없음)이 있습니다. 생성한 세션만큼 사용자 정의를 할 수 없지만 요구 사항이 매우 제한적인 경우에는 좋은 방법이 됩니다. shared 클래스 메소드를 호출하여 세션에 엑세스합니다. 다른 종류의 세션의 경우 다음 세 가지 구성 중 하나로 URLSession을 만듭니다.

(shared를 사용할 경우 delegate, 커스텀 구성을 사용할 수 없습니다. 또한 데이터가 도착한 이후 추가 데이터를 얻을 수 없습니다. 기본 연결 동작을 커스텀할 수 없습니다. 인증을 수행하는데 제한이 있습니다. 백그라운드 다운로드 또는 업로드를 수행할 수 없습니다)

결론은 최소한의 네트워크 연결이 필요하다면 URLSession.shared를 사용, 그 외의 것은 URLSession을 생성할 때 init(cofiguration:)을 사용하여 아래의 세션을 선택할 것

URLSession 작업 유형

세션 내에서 선택적으로 데이터를 서버에 업로드한 다음 디스크의 파일 또는 메모리의 하나 이상의 NSData 개체로 서버에서 데이터를 검색하는 작업을 만들 경우 URLSesseion API는 네 가지 유형의 작업을 제공합니다.