Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 리펙토링
- 클린 코드
- Observable
- HIG
- Refactoring
- Xcode
- Human interface guide
- swiftUI
- Clean Code
- SWIFT
- collectionview
- 리팩토링
- 스위프트
- uitableview
- RxCocoa
- UICollectionView
- combine
- ios
- UITextView
- clean architecture
- swift documentation
- map
- ribs
- 리펙터링
- 애니메이션
- tableView
- uiscrollview
- rxswift
- Protocol
- MVVM
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] URLSessionConfiguration의 종류 (URLSession.shared의 정체, default, ephemeral, background) 본문
iOS 응용 (swift)
[iOS - swift] URLSessionConfiguration의 종류 (URLSession.shared의 정체, default, ephemeral, background)
jake-kim 2023. 7. 2. 02:01URLSessionConfiguration 이란?
- URLSession 인스턴스를 생성할 때 URLSessionConfiguration를 사용하여 캐시 정책, 타임아웃 지정이 가능
- URLSessionConfiguration에서 설정하는 값들
- timeout 값
- caching 정책
- connection requirement
ex) URLSessionConfiguration 사용법
// config를 default로 설정한 경우
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
// config를 내장된 값으로 사용한 경우
let session = URLSession.shared
- Session Config에는 3가지가 존재
- default: shared 세션과 유사하지만 delegate를 통해서 데이터를 점진적으로 획득이 가능
- ephemeral: shared 세션과 유사하지만 디스크에 기록하지 않음
- background: 앱이 실행중이지 않을때도 콘텐츠 업로드와 다운로드가 가능 (Not Running, Suspended 상태에서도 가능)
URLSession.shared의 정체
- shared (싱글톤)
- 커스터마이징이 불가능하며 이미 정의된 값을 사용
- 아래와 같이 shared는 URLSessionConfiguration을 따로 넣어주지 않는데 내부적으로는 URLSessionConfiguration.default를 사용
// config를 default로 설정한 경우
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
// config를 내장된 값으로 사용한 경우
let session = URLSession.shared
URLSessionConfiguration.default 값
- identifier (String 타입)
- 디폴트값 - nil
- 식별자이고, background session이면 꼭 이 값을 설정해야함
- requestCachePolicy (URLRequest.CachePolicy 타입)
- 디폴트값 - .useProtocolCachePolicy
- useProtocolCachePolicy는 요청 캐시 정책이며 프로토콜에서 정의한 캐시 동작을 따름 (서버와의 요청 및 응답에 대한 캐싱 동작을 제어)
- HTTP 프로토콜을 사용하면 서버의 response header에 따라 캐시 동작이 결정
- ex) 서버가 캐시 허용 시간을 명시하는 'Cache-Control' 헤더를 포함하고 있느 경우, 해당 시간 동안 캐시된 응답 사용이 가능
- timeoutIntervalForRequest (TimeInterval 타입)
- 디폴트값 - 60초
- 요청하고 나서부터 response가 올때까지 대기시간
- timeoutIntervalForResponse (TimeInterval 타입)
- 디폴트값 - 7일
- 리소스 전송 시간 및 다운로드 하는데 최대 시간
- httpCokieStorage (HTTPCookieStorage? 타입)
- 디폴트값 - nil
- request 및 response에서 쿠키를 관리
- httpCookieAcceptPolicy (HTTPCookie.AcceptPolicy 타입)
- 디폴트값 - .onlyFromMainDocumentDomain
- 서버로부터 수신한 쿠키를 수락할지 여부
- httpAdditionalHeaders: ([String: [String]? 타입)
- 디폴트값 - nil
- 모든 요청에 추가되는 기본 HTTP 헤더 지정
- allowsCelluarAccess (Bool 타입)
- 디폴트값 - true
- 셀룰러 네트워크를 통한 데이터 전송을 허용할지 여부
cf) backgroundSession에 관한 구체적인 내용은 이 포스팅 글 참고
* 참고
https://developer.apple.com/documentation/foundation/nsurlrequest/cachepolicy/useprotocolcachepolicy
https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411560-default
https://developer.apple.com/documentation/foundation/urlsessionconfiguration
'iOS 응용 (swift)' 카테고리의 다른 글
Comments