2024/12 16

iOS 앱 크기 줄이기

iOS 앱 크기 줄이기 예전에 개발했던 앱 사이즈가 너무 커서 앱 용량을 줄이기 위해서 분석.애플 문서를 먼저 정리하고, 후에 실제 앱에 적용한 순서로로 작성.목차Reducing your app’s size (iOS 앱 크기 줄이기)Reducing your app’s size - OverviewCreate the app size reportThis process creates a folder with your app’s artifactsApp Thining Size Report 생성 자동화하기Doing basic optimization to reduce your app’s size (앱 사이즈 최적화하기)Doing basic optimization to reduce your app’s size - Ove..

iOS 히치(hitch)에 대해서 알아보기

Understanding hitches in your app 사용자 인터페이스에서의 중단과 히치(hitch)에 대해 알아보기인간의 인식은 화면에서의 움직임 중단에 매우 민감하며, 화면에서 부드러운 움직임이 짧은 시간 동안 멈추는 경우, 단 몇 밀리초라도 쉽게 눈에 띌 수 있음. 이러한 중단을 히치(hitch)라고 부름히치는 스크롤이나 드래그 같은 지속적인 인터랙션 또는 애니메이션 중에 발생각 히치는 사용자 경험에 영향을 미치므로 앱에서 가능한 한 히치를 최소화하는 것이 중요.히치란?움직임 중단은 화면이 예상한 속도로 업데이트되지 않을 때 발생하며, 프레임이 준비되지 않아 화면이 제때 업데이트되지 않으면 프레임이 지연됨.지연된 프레임은 종종 시스템이 이후 한두 개 이상의 프레임을 건너뛰게 만드는데, 이를 ..

iOS 최적화된 디스크 쓰기 관리

iOS 최적화된 디스크 쓰기 관리 데이터 저장을 위해 디스크에 쓰는 행위는 배터리 수명 및 저장 장치의 수명에 영향을 미침.디스크 쓰기를 줄이는 방법을 이해하면 앱 성능을 최적화하고 사용자 경험을 개선할 수 있음.  일반적으로 모든 iOS기기와 일부 macOS는 영구 저장소로 SSD를 사용함. SSD나 저장 매체에 있는 데이터에 엑세스 하는 속도는 RAM에 비해서 느림. Xcode와 Instruments를 사용하여 앱의 디스크 쓰기 성능을 파악할 수 있음. SSD 접근 최적화하기시스템이 SSD의 블록에 쓰기 작업을 수행할 때 해당 블록에 대한 새로운 읽기 요청은 기존 수행하는 쓰기 작업이 완료할 때 까지 대기함.SSD에 쓰는 것은 읽기 보다 느린 작업.읽기 및 쓰기 요청을 인터리빙하면 앱의 성능이 느..

Swift URLProtocol (URLSessionConfiguration)

Swift URLProtocol (URLSessionConfiguration) 최근 서비스에서 애드가드를 막기 위한 방법을 고민하고 있는데, 네트워크 관련 부분을 학습함.학습 후에 테스트코드, 퍼널 분석을 위한 로그 및 시스템 os로그 기록 등 더 다양하게 활용할 수 있을 것으로 기대. 학습 예제 파일 (SPM - Currency)목차OverviewURLProtocol 간단 요약코드 구현 예제주요 메서드 설명코드 사용 예제활용할 수 있는 포인트 OverviewApple의 공식 문서에서 제공하는 URLProtocol은 URL 로딩 시스템의 요청을 처리하는 데 사용되는 강력한 커스텀 프로토콜.URLProtocol은 애플의 URL 로딩 시스템이 네트워크 요청을 처리하는 방식을 커스터마이즈하거나 대체할 수 있도..

iOS SnapshotTesting (스냅샷 테스팅)

iOS SnapshotTesting (스냅샷 테스팅) 오픈소스를 활용해서 스냅샷 테스트를 연습해보고자 함. 목차스냅샷 테스트란?오픈소스 설치하기테스트 코드 작성하기성공한 스냅샷 확인만약에 View의 배경색을 바꾼다면? 예제 파일오픈소스https://github.com/pointfreeco/swift-snapshot-testing 스냅샷 테스트란?스냅샷 테스트는 특정 시점에서의 스냅샷을 저장하고, 이후 변경이 발생했을 때 이를 비교하여 문제를 발견할 수 있음UI 요소(View, ViewController)데이터 구조(JSON, 문자열 등)파일(이미지, 텍스트, PDF 등)스냅샷 테스트는 파일로 저장되어 git 버전 관리를 활용해 변경 내용을 추적할 수 있음.swift-snapshot-testing은 UI와..

iOS 캐싱 로직 구현 전 디스크 분석

iOS 캐싱 로직 구현 전 디스크 분석 앱에서 서버를 통해 값을 받아온 후 이 값을 캐싱하고 있다가 사용자가 앱을 종료 후에 다시 접속한 경우 캐싱된 값을 먼저 보여준 후 네트워크 응답이 도착하면 갱신하는 형태로 구현하고자 함. UserDefaults, SwiftData, CoreData, Realm, Filemanager 중에서 어떤걸 선택하는 것이 좋은지 궁금해서 비교해보기로 함.UserDefaults: 간단한 데이터 저장에 유용해 적합하지 않을 것으로 보임.SwiftData: iOS 17이상이라서 현재 현실적으로 사용하기가 어려움.CoreData: Realm이 있어서 굳이 써야하는지 의문이긴 함.Filemanager: 자주 변경되는 데이터라서 성능적으로 적합하지 않을 것 같음.Realm: 12.2..

[HLS] Creating a Multivariant Playlist

Creating a Multivariant Playlisthttps://developer.apple.com/documentation/http-live-streaming/creating-a-multivariant-playlist동일 컨텐츠의 다른 인코딩을 제공하기 위한 여러 플레이리스트.목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multivariant Playlist..

apple/HLS 2024.12.05

[HLS] HTTP Live Streaming Overview

HTTP Live Streaming Overviewhttps://developer.apple.com/documentation/http-live-streaming목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multivariant PlaylistOverviewHLS(HTTP Live Straming)은 애플 디바이스에서 멀티미디어를 재생하기 위해 웹서버에서 HTTP 오디..

apple/HLS 2024.12.05

[HLS] Live Playlist (sliding window) construction

Live Playlist (sliding window) constructionhttps://developer.apple.com/documentation/http-live-streaming/live-playlist-sliding-window-construction라이브 세션 플레이리스트를 위한 기본 구성에 대한 이해목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multi..

apple/HLS 2024.12.05

[HLS] Event playlist construction

Event playlist constructionhttps://developer.apple.com/documentation/http-live-streaming/event-playlist-construction이벤트 세션 플레이리스트의 기본 구조에 대해 학습목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multivariant PlaylistOverview이벤트 플레이리스..

apple/HLS 2024.12.05