iOS

iOS) URLSession 에 대해 알아보자

Jimmy Youn 2021. 10. 31. 14:09

1. URLSession 

  • 특정한 url 을 이용하여 데이터를 다운로드 하고 업로드 하기 위한 API 
  • 한마디로 앱에서 서버와 통신하기 위해 제공하는 api 라고 생각하면 된다. 
  • URLSession 은 URLSessionConfiguration 을 통해 생성할 수 있다. 이렇게 생성된 URLSession 을 통해 한개 이상의 URLSessionTask 를 생성할 수 있다. 

 

2. URLSession 의 종류 

1) 공유 세션 (Shared Session) 

  • URLSession.shared() : 싱글톤으로 사용할 수 있고 기본 요청을 하기 위한 세션 

2) 기본 세션 (Default Session) 

  • URLSession(configuration : .default) : 공유 세션과 유사하게 작동하지만, 직접 원하는 설정을 할 수 있고, 캐시와 쿠기 인증등을 disk 에 저장한다. 또 순차적으로 데이터를 처리하기 위해 delegate 를 지정할 수 있다. 

3) 임시 세션 (Ephemeral Session) 

  • URLSession(configuration : .ephemeral) : 공유 세션과 비슷하지만 캐시, 쿠기, 사용자 인증 정보를 disk 에 저장하지 않는다. 메모리에 올려서 세션에서 연결하고 세션 만료시 데이터가 사라진다. 

4) 백그라운드 세션 (Background Session) 

  • URLSession(configuration : .background) : 앱이 실행되지 않는 동안 백그라운드에서 컨텐츠 업로드 및 다운로드를 실행할 수 있다. 

 

3. Task 의 종류 

1)  URLSessionDataTask : 데이터 객체를 사용하여 데이터를 요청하고 응답하는데 주로 짧고 빈번하게 요청하는데 사용된다. 

 

2) URLSessionUploadTask : 데이터 객체 또는 파일 형태의 데이터를 업로드 하는 작업을 수행한다. 앱이 실행되지 않았을때 백그라운드                             업로드를 지원한다. 

 

3) URLSessionDownloadTask : 데이터를 다운로드 받아서 파일의 형태로 저장하는 작업을 수행한다. 앱이 실행중이지 않을때는 백그라운드 다운로드를 지원한다. 

 

4) URLSessionStreamTask : TCP IP 연결을 생성할때 사용되는 task 

 

5) URLSessionWebSocketTask : 웹 소켓 프로토콜 표준을 통해 통신하는 task 

 

4. URLSession Life Cycle 

1) Session Configuration 을 결정하고, Session 을 생성 

2) 통신할 URL 과 Request 객체를 설정 

3) 사용할 Task 를 결정하고 그에 맞는 Completion Handler 나 Delegate 메소드들을 작성 

4) 해당 Task 를 실행 

5) Task 완료 후 Completion Handler 클로저가 호출이 됨