일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Xcode
- WebSocket
- GIT
- Architecture
- raspberrypi5
- builder
- designpattern
- isolate
- uikit
- AppleDeveloper
- dart
- OpenAI
- weatherkit
- LifeCycle
- SampleApp
- WWDC24
- dartz
- dgcharts
- chartsorg
- URLSession
- swift
- philipshue
- iot
- tuist
- network
- EventLoop
- 문법
- flutter
- SwiftUI
- embedded-swift
Archives
- Today
- Total
Jaebi의 Binary는 호남선
[Swift] 대용량 파일 다운로드 (0) - 계획 본문
목차
개요
- 업무 중 고객이 대용량+다중 파일을 다운로드 하여 휴대폰에 보관하고, 관리를 해야하는 요구 사항이 생김
- 예: 유튜브, 넷플릭스 오프라인 콘텐츠 저장
요구사항
- 파일 다운받기 전 여유 공간 / 파일 사이즈를 확인하여 알맞은 처리
- 다운 받을때 Cellular / Wifi 선택지를 줘야함 (Apple에서 권장)
- 내가 원하는 경로에 다운받은 파일을 넣어줘야 함
- Background에서 다운로드 가능 해야 함
- 파일 다운로드 중 Pause / Cancel / Resume 및 강제 앱 종료 시나리오 확인
- 대용량 (최대 500MB) 파일 다운로드가 문제없이 되어야 함
- 다운로드는 여러개가 동시에 가능하게 되어야 함
- 사용자는 파일의 다운로드 시작 과 끝을 Notification으로 알아야 함
- 진행상황은 iOS Notification으로 표시 불가능 (Android는 가능한데 ㅠㅠ)
- (Optional) `async` / `await`을 최대한 사용 (`completionHandler` 지양)
구현 계획
- 간단한 `FileDownloadService` 만들기
- `async` / `await` 최대한 사용
- 다운로드 진행상황 확인 기능
- Background에서 다운로드 기능
- 파일 다운로드 후 원하는 경로에 해당 파일 넣기 및 확인 기능
- `FileDownloadSerivce`에 Pause / Cancel / Resume 기능 추가
- 다운로드 중 강제 앱 종료 시나리오 처리
- 여러 파일 동시에 다운로드 기능 추가
- 각 다운로드 세션이 독립적이게 진행되는 기능
- 여러 다운로드 세션을 묶어 모니터링 기능
- 다운로드 받기 전 여유 공간 및 파일 사이즈 확인 기능 추가
- 다운로드 받기 전 Cellular / Wifi 선택지 추가
진행 상황
[Swift] 대용량 파일 다운로드 (2) - FileDownloadService
목차목표`async` / `await` 사용다운로드 진행상황 확인 기능Background에서 다운로드 기능구현 내용Singleton FileDownloadService 클래스 구현`URLSessionDownloadDelegate`를 준수하여 Delegate 함수들로 세션 진행상황
jaehwijaebi.tistory.com
[Swift] 대용량 파일 다운로드 (3) - FileManager
목차목표파일 다운로드 성공시 원하는 Directory에 파일 저장해당 파일이 이미 존재할 경우 Replace 동작해당 파일은 App의 Files앱 내에서도 확인 가능구현 내용`Info.plist`의 키 설정`Info.plist`의 `Supports
jaehwijaebi.tistory.com
[Swift] 대용량 파일 다운로드 (4) - 다운로드 진행상황 확인 및 View 연결
목차목표다운로드 진행상황 확인 (Byte와 퍼센트 분율)View에 연동하여 UI로 확인 구현 내용 다운로드 진행상황 확인을 위한 Delegate 구현`urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedT
jaehwijaebi.tistory.com
'Swift' 카테고리의 다른 글
[Swift] 대용량 파일 다운로드 (2) - FileManager (0) | 2025.03.13 |
---|---|
[Swift] 대용량 파일 다운로드 (1) - FileDownloadService (0) | 2025.03.08 |
[Swift] WebSocket + STOMP 연동 (0) | 2025.02.04 |
[Swift] 실시간 데이터 표현 (0) | 2025.02.04 |
[Package] DGCharts - 차트 커스터마이징 (0) | 2025.02.04 |