URLSessionConfiguration
URL session의 동작과 정책을 정의하는 configuration 객체
Last updated
URL session의 동작과 정책을 정의하는 configuration 객체
Last updated
원문 출처
SDKs
iOS 7.0+
macOS 10.9+
tvOS 9.0+
watchOS 2.0+
Framework
Foundation
URLSessionConfiguration 객체는 URLSession 객체가 데이터를 업로드하고 다운로드 할때의 동작과 정책을 정의합니다. 데이터를 업로드하거나 다운로드 할 때 configuratioin 객체를 만드는 것은 반드시 해야할 첫 단계입니다. 이 객체를 사용해서 timeout 값, 캐시 정책, 접속 요구사항 및 URLSession 객체와 함께 사용할 기타 유형의 정보를 설정합니다.
세션 객체를 초기화하기 전에 URLSessionConfiguration 객체를 적절하게 설정하는 것은 아주 중요한 일입니다. 세션 객체는 configuration 설정을 복사하여 자기 자신의 설정으로 삼고 한번 설정된 이후에는 URLSessionConfiguration이 어떤 변경이 발생하든지 무시합니다. 전송 정책을 변경하고 싶다면 session configuration 객체를 수정한다음 그것으로 새로운 URLSession 객체를 만들어야 합니다.
URL session의 기능과 동작은 상당수가 세션을 생성할때 사용된 configuration의 종류에 따라서 결정됩니다.
(configuration 객체를 갖지 않는) 싱글톤 shared 세션은 기초적인 요청에 사용되며 직접 생성한 것만큼 커스터마이징할 수 없습니다. 그렇지만 제한된 요구사항 내에서는 좋은 출발점이 됩니다. shared 클래스 메서드를 사용함으로써 이 세션에 접근할 수 있으며 이 세션의 제한사항에 대해서 알고 싶다면 해당 메서드 문서를 읽어보십시오.
Default 세션은 (커스터마이징을 하지 않는다면) shared 세션과 상당히 비슷하지만 delegate를 통해서 데이터를 점진적으로 얻어올 수 있습니다. URLSessionConfiguration 클래스의 default 메서드를 호출함으로써 생성할 수 있습니다.
Ephemeral session은 shared session과 비슷하지만 캐시나 쿠키, 자격증명을 디스크에 기록하지 않습니다. URLSessionConfiguration 클래스의 ephemeral 메서드를 호출함으로써 생성할 수 있습니다.
Background session은 앱이 실행중이지 않을 때도 백그라운드에서 컨텐츠를 업로드하거나 다운로드할 수 있게 해줍니다. URLSessionConfiguration 클래스의 backgroundSessionConfiguration(_:) 메서드를 호출하여 생성할 수 있습니다.
class var `default`: URLSessionConfiguration default session configuration 객체
class var ephemeral: URLSessionConfiguration 캐시, 쿠키나 자격증명을 디스크에 기록하지 않는 session configuration
class func background(withIdentifier: String) -> URLSessionConfiguration HTTP 또는 HTTPS 업로드/다운로드를 백그라운드에서 수행할 수 있는 session configuration
var identifier: String? configuration 객체의 background 세션 식별자
var httpAdditionalHeaders: [AnyHashable: Any]? 요청을 보낼때 보내지는 추가적인 헤더 딕셔너리
var networkServiceType: NSURLRequest.NetworkServiceType 이 configuration을 기반으로 한 세션 내 모든 task들의 네트워크 서비스 타입
var allowsCellularAccess: Bool cellular 네트워크 연결을 하용할 것인지를 결정하는 Boolean 값
var timeoutIntervalForRequest: TimeInterval 추가적인 데이터를 기다릴 때 사용할 timeout 시간 간격
var timeoutIntervalForResource: TimeInterval 리소스 요청에 허용되는 최대 시간
var sharedContainerIdentifier: String? 백그라운드 URL session이 파일을 다운로드 할 공유 컨테이너의 식별자
var waitsForConnectivity: Bool 연결이 사용가능할때까지 세션을 대기시킬지, 즉시 실패처리 할것인지를 나타내는 Boolean 값
var httpCookieAcceptPolicy: HTTPCookie.AcceptPolicy 쿠키 수락 조건을 결정하는 정책 상수
var httpShouldSetCookies: Bool 요청에 쿠키저장소의 쿠키가 포함되어야 하는지를 결정하는 Boolean 값
var httpCookieStorage: HTTPCookieStorage? 세션 내의 쿠키를 저장하는 쿠키 저장소
class HTTPCookieStorage 쿠키 저장소를 관리하는 컨테이너
class HTTPCookie HTTP 쿠키 구현
var tlsMaximumSupportedProtocol: SSLProtocol 현재 세션에서 접속 시 클라이언트가 요청해야 하는 TLS 프로토콜의 최고 버전
var tlsMinimumSupportedProtocol: SSLProtocol
프로토콜 협상 중에 클라이언트가 받아들일 수 있는 TLS 프로토콜의 최소 버전
urlCredentialStorage: URLCredentialStorage? 인증을 위한 자격증명(Credential)을 제공하는 저장소
var sessionSendsLaunchEvents: Bool 전송이 완료되었을때 앱이 재개 또는 다시 시작되어야 할지를 나타내는 Boolean 값
var isDiscretionary: Bool 최적의 성능을 위해 백그라운드 작업을 시스템의 재량에 따라 스케줄링시킬 것인지를 결정하는 Boolean 값
var shouldUseExtendedBackgroundIdleMode: Bool
앱이 백으라운드로 이동했을 때에도 TCP 커넥션을 유지할 것인지를 나타내는 Boolean 값
var protocolClasses: [AnyClass]? 세션의 요청을 처리하는 추가적인 프로토콜 하위클래스의 배열
class URLProtocol 프로토콜 고유의 URL 데이터 로딩을 처리하는 추상 클래스
Multipath TCP를 사용한 네트워크 신뢰성 향상 iOS 디바이스의 사용가능한 무선장치를 이용하여 앱의 네트워크 신뢰성과 성능을 향상시키세요.
var multipathServiceType: URLSessionConfiguration.MultipathServiceType
Wi-Fi 및 셀룰러 인터페이스를 통해 데이터를 전송하기위한 Multipath TCP 연결 정책을 나타내는 서비스 타입
enum URLSessionConfiguration.MultipathServiceType Multipath TCP가 사용하는 서비스 타입을 나타내는 상수
Multipath Entitlement Wi-Fi와 cellular 네트워크 간의 원활한 전환을 위해 앱에 Multipath 프로토콜을 사용할 것인지를 지정하는 Boolean 값 Key: com.apple.developer.networking.multipath
var httpMaximumConnectionsPerHost: Int 해당 호스트에 대한 최대 동시 접속 수
var httpShouldUsePipelining: Bool 세션에서 HTTP 파이프라이닝을 사용할 것인지를 나타내는 Boolean 값
var connectionProxyDictionary: [AnyHashable : Any]? 세션에서 사용할 프록시에 대한 정보를 갖는 딕셔너리
var waitsForConnectivity: Bool 연결이 사용가능할때까지 세션을 대기시킬지, 즉시 실패처리 할것인지를 나타내는 Boolean 값
class func backgroundSessionConfiguration(String) -> URLSessionConfiguration deprecated
Returns a session configuration object that allows HTTP and HTTPS uploads or downloads to be performed in the background.
NSObject
CVarArg
Equatable
Hashable
NSCopying
init(configuration: URLSessionConfiguration) 특정 session configuration으로 세션을 생성합니다.
init(configuration: URLSessionConfiguration, delegate: URLSessionDelegate?, delegateQueue: OperationQeueu?) 특정 session configuration과 delegate, delegateQueue로 세션을 생성합니다.
configuration 객체를 사용하여 세션을 생성하는 방법에 대해서 더 자세한 내용이 알고 싶다면 을 참고하세요.
var : URLCache? 세션 내에서의 요청에 대해 캐쉬된 응답을 제공하는 URL cache
var : NSURLRequest.CachePolicy 캐시된 응답의 반환 조건을 결정하는 사전 정의 상수
var : URLSessionConfiguration session configuration 객체의 복사본