[Apple] URL Loading System

J.Noma·2022년 1월 5일
0

iOS : 네트워킹

목록 보기
2/6

Reference


Remind

  • private session은 데이터를 캐싱하지 않는다
  • Task를 background로 돌린 후, 완료시점에 suspend 상태의 App을 깨울 방법도 있다

Overview

URL Loading System은 https같은 표준 프로토콜 혹은 custom 프로토콜을 사용하여, URL이 식별한 리소스에 대한 접근을 제공합니다. Loading 작업은 비동기적으로 수행되므로, App은 유저 응답성을 유지하면서data/error가 도착했을 때 처리를 해줄 수 있습니다

URL Loading System에 참여하는 인스턴스 소개
당신은 URLSession 인스턴스를 사용하여 하나 이상의 URLSessionTask 인스턴스를 만들게 됩니다. 이 task 인스턴스는 데이터를 fetch해와서 App에 전달하거나 파일을 다운로드받고, 반대로 remote로 데이터나 파일을 업로드할 수도 있습니다. session을 설정하기 위해선 URLSessionConfiguration 객체를 사용하게 됩니다. 이것은 캐시/쿠키를 어떻게 사용할지, 셀룰러 네트워크로의 연결을 허용할지 등과 같은 행위를 제어하게 됩니다

Default session / Private session
당신은 하나의 session을 재사용하여 여러 task를 반복적으로 만들 수 있습니다. 예로, 웹브라우저는 일반적인 브라우징과 private 브라우징 각각을 위한 별개의 session을 가지는 경우가 있습니다. private session은 자신의 데이터를 캐싱하지 않습니다. 아래 그림은 configuration에 따라 여러 Task를 만들 때 어떻게 동작하는지를 보여줍니다

Completion Handler / Delegate
각 session은 주기적으로 Task의 상황을 업데이트받기 위해 delegate와 연결됩니다. 기본적으로 session은 Task 완료/실패 시점에 completion handler를 호출하게 되는데, 만약 delegate를 지정했다면 completion handler는 호출되지 않습니다

background Task
session이 background에서 돌게 설정할 수도 있습니다. 이는 App이 suspend된 동안, 시스템이 App을 대신하여 파일을 다운로드받고 결과를 전달하기 위해 App을 깨우도록 할 수도 있습니다

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

0개의 댓글

Powered by GraphCDN, the GraphQL CDN