2022/08 11

214. Background Download

Background Download UploadTask와 DownloadTask는 기본적으로 Foreground에서 실행되도록 구현돼있다. Background로 전환했던 앱이 Foreground로 돌아왔을 때 중지된 Task를 이어서 하도록 구현하는 것도 가능하지만, Background에서도 문제 없이 동작하도록 하는 것이 자연스럽다. BackgroundSession은 다른 Session과 다르게 별도의 Process에서 실행되고, 데이터의 전송도 OS가 관리하도록 설계돼있다. 이 때문에 App이 Background로 전환돼도 주체는 변하지 않기 때문에 동작이 유지될 수 있다. BackgroundDownload가 완료되면 Delegate로 Notification을 전송한다. 기능의 원리는 복잡하지만 구현..

213. Download Task

Download Task 네트워크를 통해 데이터를 전송받을 수 있는 Task는 두 가지가 있다. 어느 것을 쓰라고 애플에서 정해주진 않지만, 각각의 특성 덕분에 Data Task는 휘발성의 작은 데이터에, Download Task는 비휘발성의 큰 데이터에 쓰는 것이 일반적이다. Download Task가 동작하는 방식은 다음과 같다. OS가 관리하는 임시폴더에 저장 Delegate를 사용해 임시 폴더의 URL 전달 URL에 접근 후 파일을 원하는 위치로 복사 Download Task는 CancelDownload와 ResumeDownload를 지원하며, 이를 위한 일시정지도 구현 가능하다. 이러한 기능은 Wifi연결이 끊기는 경우 등 여러 상황에 유연하게 대처하는 데 도움이 된다. DownloadTask를..

[~2022.05.31] 에딕티이즈, 일상 (Ricoh GR 3x, iPhone 13 mini)

서론 RICOH GR 3x / 포지티브 필름 iPhone 13 mini 대부분 보정 없음(못함) 본론 5월 1일 집에 사라졌던 화분들이 하나씩 늘고 있다. 막 싹을 내리기 시작한 단풍나무들과 관리하다 떨어진 우주목 잎꽂이 당첨. 우주목은 저번 달에 떨어졌으니 뿌리가 나올 모양이길래 흙에 꽂아 줬다. 5월 6일 할머니와 함께 산책을 나갔다가 본 꽃. 해도 좋고, 작고 소중하더라. 5월 7일 ADDIC-TIES(에딕티이즈) 어번(Urban)느낌의 카페. 드립 커피는 커피에 대한 깊은 지식이 없어도 충분히 즐길 수 있도록, 아로마에 대한 충분한 설명이 메뉴판부터 돼있고, 서빙될 때 프린팅 된 종이로도 제공된다. 모임이 항상 점심 즈음 시작하기 때문에 어쩌다 보니 빵 나오는 시간과 맞아 떨어졌는데 이 때 주문한..

사진 2022.08.29

212. Upload Task

Upload Task Dropbox와 연동해 Upload를 Task를 구현해 본다. Dropbox의 Developer app console에서 필요한 API Key를 얻을 수 있다. 파일을 쓰는데 문제가 없도록 write 권한을 활성화 한다. Dropbox/upload HTTP - Developers - Dropbox Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again! www.dropbox.com Dropbox의 upload url은 다음과 같다. https://content.dropboxapi.com/..

211. Post Request

Post Request 서버로 데이터를 전송하는 경우 보통 POST와 PUT을 사용하게 된다. 전송하는 데이터의 형식은 서버에 따라 달라 API 문서를 확인하는 과정이 필요하다. POST를 위해 필요한 request 정보는 다음과 같다. method POST header Content-Type : application/json body url JSON 데이터 구조 struct PostData: Codable { let a: Int let b: Int let op: String } 서버는 JSON 파일을 받고, 세 개의 데이터를 받는다. 이들은 각각, 연산자와 피연사자로 사용된다. 따라서 JSON Encoding에 사용할 구조체도 이에 맞도록 구현해야 한다. Request 생성 @IBAction func ..

210. SessionConfiguration

SessionConfiguration URLSession을 직접 생성하는 경우 SessionConfiguration을 파라미터로 전달해 줘야 할 필요가 있다. SessionConfiguration은 네트워크 연결에 관련된 속성을 설정하며, 때문에 URLSession을 생성하기 전에 구성을 완료해 전달해야 한다. 이후에는 수정할 수 없다. SharedSessionConfiguration SharedSession을 구성할 때 사용한다. 모든 설정값이 기본값을 가진다. 직접 사용하는 경우는 없다. DefaultSessionConfiguration 모든 설정값이 기본값을 가진다. SessionDelegate를 사용한 Event 처리가 가능하다. DiskCache를 사용한다. (인증정보 = KeyChain, Co..

209. URL Session Delegate

URL Session Delegate Completion Handler가 Task가 완료되는 시점에 실행되는 것과는 다르게, Session Delegate는 Task가 실행되는 동안 발생하는 모든 Event를 세부적으로 처리한다는 차이가 있다. SessionDelegate의 구조는 다음과 같다. Model.swift struct Book: Codable { let id: Int let title: String let desc: String let link: String let date: Date enum CodingKeys: String, CodingKey { case id case title case desc = "description" case link = "yes24Link" case date = ..

208. Data Task

Data Task URL 생성 DataTaskTableViewController.swift guard let url = URL(string: booksUrlStr) else { fatalError("Invalid URL") } Network 작업은 항상 URL을 새로 생성하는 것으로 시작한다. guard 문을 사용해 URL을 생성함과 동시에 오류처리를 함께 진행할 수 있다. seesion 생성 DataTaskTableViewController.swift let session = URLSession.shared 기본 session인 shared session을 생성한다. shared session은 기본 설정값을 사용하며, Completion Handler를 통해 반환 값을 전달한다. Task 생성 Dat..

207. URL Loading System

URL Loading System iOS는 URL을 사용해 서버와 통신한다. 이를 가능하게 하는 URL Loading System은 서버연동, 다운로드, 업로드에 필요한 다양한 API를 제공한다. URL Session URL Session은 네트워크 연결 설정과 요청, 응답을 처리하는 역할을 한다. Shared Session 단순한 네트워크 요청 기본값을 사용하며, Completion Handler를 사용해 완료값을 반환한다. Background 전송을 지원하지 않는다. Default Session 직접 Session을 구성할 때 사용한다. Delegate를 사용해 세부적인 제어가 가능하다. Disk Memory Cache에 완료값을 저장한다. Ephemeral Session Default Session..

너도 알고 나도 아는 iOS 팁 06 : 사진들을 분리해 관리해 보자

서론 아이폰을 사용하다 보면 사진 앱이 금방 지저분해진다. 업무 목적이나 친구들과의 대화 등 여기저기서 저장한 사진들이 모두 사진 앱에 모이고, 이들을 구별할 수 있는 건 앨범이 유일하다. 그나마도 앨범은 사진들을 분리해서 저장하는 것이 아닌 '태그'의 개념에 가까워 난장판이 되는 건 정말 순식간이다. 애플에서는 당연하게 사진앱에 저장해 버리지만, 이걸 분리해서 관리하는 것이 필요할 때가 있으니 한번 그렇게 관리해 보자. 본론 준비물 파일 앱 ‎Files ‎Access and organise your files no matter where they’re located — on your device, in the cloud, on an external drive or file server— with Fil..