[Apple] URLSessionConfiguration

J.Noma·2022년 1월 5일
0

iOS : 네트워킹

목록 보기
1/6

Reference


Remind

  • 한번 URLSession에 설정된 configuration은 수정할 수 없다
    (필요하다면, configuration을 수정하고 새로운 URLSession을 만들어 설정해야 함)
  • configuration뿐 아니라 NSURLRequest에도 정책을 설정할 수 있는데, 최종적으로 더 강한 정책이 적용된다
  • shared session은 delegate를 쓸 수 없다

⚙️ Overview

URLSessionConfiguration의 용도/목적
URLSessionConfiguration 객체는 URLSession 객체를 사용하여 데이터를 업로드/다운로드할 때 사용할 행동/정책을 정의합니다. 데이터를 업드로/다운로드할 때면, 항상 configuration 객체를 만드는 것이 우선시되어야 합니다. configuration 객체를 사용하여 타임아웃 값, 캐시 정책, 연결 요구사항 등과 같이 URLSession과 함께 사용하려는 정보들을 설정하게 됩니다

**
URLSessionConfiguration은 URLSession을 초기화할 때 필요하므로 미리 만들어놔야 합니다. session 객체들은 configuration의 복사본을 만들어서 자신을 설정하는데 사용합니다. 참고로, session에 한번 설정된 configuration은 바꿀 수 없습니다 (변경을 시도해도 무시됨). 만약 수정이 필요하다면, 수정된 configuration을 설정할 새로운 URLSession을 만들어야 합니다

✅ NOTE
어떤 경우, configuration에 의해 설정된 정책들이 NSURLRequest 객체에 의해 override될 수도 있습니다. 결론적으로 둘 중 더 엄격한 정책이 적용됩니다. session보다 request의 정책이 더 엄격하다면 request의 정책이 적용됩니다. 예로, configuration이 셀룰러 네트워킹을 금지시켰다면, NSURLRequest 객체도 셀룰러 네트워킹을 요청할 수 없습니다


⚙️ Types of Session Configurations

URLSession의 행동과 능력은 대부분 configuration에 의해 결정됩니다

  • shared : delegate를 지정할 수 없는 간단한 비동기 요청. custom이 제한적입니다

  • Default : 기본 설정 session. custom 가능

  • Ephemeral : delegate를 지정할 수 없음. private session으로 disk에 파일을 저장하지 않음. 사파리/크롬의 시크릿모드 만들 때 활용되고 쿠키같은 세션 정보가 남지 않음

  • Background : App을 사용하지 않더라도 (suspend/not running)일 때도, 운영체제 level에서 (background로) 업로드/다운로드를 수행하기 위한 session. 지하철이나 지도 App에서 업데이트된 데이터를 받고 싶은 경우, background session을 만들어놓으면 App이 살아있지 않을 때도 업로드/다운로드가 가능해진다

profile
노션으로 이사갑니다 https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe

0개의 댓글