본문 바로가기
IOS

iOS) URLSession 정리

by eigen96 2022. 5. 7.
728x90

 

URLSession

url 로딩 시스템을 구현할 수 있게 하는 객체

osi의 7번째 계층 애플리케이션 레이어의 개념들이 이 URLSession을 통해서 어떻게 표현되고 구축할 수 있는지를 알아보겠습니다.
foundation 프레임워크에서 URLSession이라는 클래스를 제공합니다.

 

ios를 포함한 애플의 os 상에서 네트워크를 구축을 하려면 이 url 세션을 활용해야 합니다.
 
  • http를 포함한 osi 7계층의 프로토콜들을 지원
  • 네트워크 인증, 쿠키, 캐시 관리 같은 서버와의 데이터 교류 작업 전반을 지원
  • 네트워크 데이터 전송과 관련된 테스크 그룹 조정
url 로딩 시스템이 뭐지?
url을 통해서 상호작용하고 표준 인터넷 프로토콜을 사용해서 서버와 통신하는 시스템을 의미합니다.
표준 인터넷 프로토콜은?
우리가 전에 배웠던 이 http와 같은 표준 프로토콜이거나 사용자나 특정 앱에서 제공하는 고유의 프로토콜일 수 있어요.
url 세션은 이러한 url 로딩 시스템을 바탕으로 해서 사용자나 특정 앱에서 만든 사용자 지정 프로토콜을 사용해서 url 형태로 직결되는 리소스에 대한 엑세스를 제공합니다. 이러한 데이터 읽기는 비동기식으로 수행되기 때문에
앱이 응답을 유지하고 수신 데이터 또는 오류가 도착하는 즉시 처리할 수 있게 됩니다.
 
url 세션 객체를 만들려면 이렇게 URL Session Configuration이라는 객체를 사용
  •  캐시 및 쿠키를 사용하는 방법 또는 셀룰러 네트워크에서 연결을 허용할지 여부와 같은 동작을 제어 하는 객체 생성
위 객체를 만들지 않았을때
URL 세션은 Shared라는 싱글톤을 제공
이러한 세션에 대한 복잡한 요구 사항이 없을 때는 일반적으로 이러한 싱글톤을 이용해서 세션을 사용하게 됩니다.
 
 
URL Session Configuration 종류
 
URLSession(configuration : .default)
URLSession(configuration : .ephemeral)
URLSession(configuration : .background(withIdentifier: "" ))

 

default 기본 세션은 spared 세션과 아주 유사하게 작동하지만 추가적으로 설정이 더 가능하다고 보시면 돼요
예를 들면 데이터를 점진적으로 가져오도록 델리게이트 설정을 할 수 있습니다.
두 번째 임시 세션 역시 spared 세션과 유사하지만 캐시 쿠키 또는 자격 증명을 디스크에 쓰지 않아요.
그리고 마지막으로 백그라운드 세션을 사용하면 우리 앱이 실행되지 않는 동안에도 백그라운드에서 콘텐츠를 업로드하거나 다운로드하는 것을 수행을 할 수 있습니다.
 
세션을 구성후 선택적으로 URL SessionTask 객체를 만들 수 있어요.
-> 세션 내에서 데이터를 서버에 업로드한 다음 서버로부터 데이터를 검색하는 작업을 만듬
url 세션 api는 이 세션 테스크의 하위 클래스를 제공합니다.
용도에 따라 5가지로 볼 수 있겠습니다.
 
URLSessionDataTask
  • 데이터 테스크는 ns 데이터 객체를 사용해서 데이터를 송신하고 수신
URLSessionUploadTask
  • 데이터 테스크와 유사하지만 파일을 전송하고 앱이 실행되지 않는 동안 백그라운드 업로드를 지원
  • 데이터는 조금 작은 단위 단발성 단위에 데이터, 업로드는 좀 큰 단위로 생각.
URLSessionDownloadTask
  • 다운로드 테스크는 파일 형식 기반으로 데이터를 검색하고
    앱이 실행되지 않는 동안에는 백그라운드 다운로드 및 업로드를 지원
URLSessionStreamTask
URLSessionWebSocketTask
 

url 세션을 통한 네트워크 통신의 라이프 사이클

  • url 세션 객체 생성
    • 세션이 가지는 속성들을 우리는 정의
  •  리퀘스트 객체 생성 
    • 우리가 통신하고자 하는 url 그리고 그 url에 어떤 내용을 요청할지 무슨 메소드로 요청할지 url 리퀘스트 객체를 통해서 작성
  • url 세션 테스크 생성
    • 테스크 객체는 일반적으로 세션 객체가 서버로 요청을 보낸 다음에 응답을 받을 때 url 기반의 내용들을 받아서 핸들링하는 역할을 해요. 따라서 이 작업의 성격에 따라서 여러 종류의 테스크가 지원. 이후 반드시 이렇게 생성한 테스크 객체를 리즘 즉 실행시켜줘야 합니다. 

 

 
태스크가 완료되면 수신한 리스폰스를 이 테스트 객체를 생성할 때 설정한 컴플리션 핸들러나 델리게이트를 통해서 가공하고 앱에 구현을 하게 됩니다.

 

728x90

댓글