-
iOS에서 외부 지도 앱 스킴 기반 라우팅 구현하기/iOS 📱 2026. 4. 7. 21:41
들어가며iOS에서 외부 지도 앱으로 길찾기를 넘길 때 가장 먼저 떠오르는 방식은 URL Scheme입니다. 이번 실습에서는 네이버지도, TMAP, 카카오맵 세 가지 provider를 하나의 라우터로 묶고, 앱이 설치되어 있지 않은 경우 fallback까지 처리하는 흐름을 정리해봤습니다.핵심은 단순히 UIApplication.shared.open 을 호출하는 것이 아니라, provider별 URL 생성 책임을 분리하고, canOpenURL 검사와 fallback 정책을 라우터에서 일관되게 다루는 구조를 만드는 것입니다.이번 실습에서 잡은 구조프로젝트는 크게 네 가지 레이어로 나눴습니다.RouteDestination: 출발지와 도착지 좌표를 표현하는 모델MapRouteProvider: 지도 앱별 스킴 URL..
-
[iOS] SPM Package 등에서 커스텀 폰트 (Custom Font) 추가하기/iOS 📱 2026. 1. 28. 02:37
2026.01.28 - [/iOS 📱] - [iOS] 커스텀 폰트 (Custom Font) 추가하기 기존 Bundle(main) Resource 에 등록하여 info.plist 와 매핑하여 가져왔지만, 특정 패키지에 종속 되는 경우에는 프로젝트 Copy Bundle Resources 에 없기 때문에 위 링크 된 기존 방식으로는 Package에서 리소스를 추가했을 때, 인식하지 못하게 됩니다.1. 폰트 준비TTF는 애플에서, OTF는 마이크로소프트에서 개발된 저장 방식이라고 합니다. 2. 리소스 추가 다운로드 받은 폰트를 Resource 폴더에 추가합니다. 3. info.plist 추가 코드를 통해 동적으로 추가CTFontManagerRegisterGraphicsFont is dep..
-
[iOS] 커스텀 폰트 (Custom Font) 추가하기/iOS 📱 2026. 1. 28. 01:18
1. 폰트 준비TTF는 애플에서, OTF는 마이크로소프트에서 개발된 저장 방식이라고 합니다. 2. 리소스 추가 다운로드 받은 폰트를 Resource 폴더에 추가합니다. 3. info.plist 추가프로젝트에 글꼴 파일을 추가한 후에는 iOS에 해당 글꼴을 알려야 합니다. 이를 위해 Info.plist에 “Fonts provided by application” 키를 추가하십시오(원시 키 이름은 UIAppFonts입니다). Xcode는 키에 대한 배열 값을 생성합니다; 글꼴 파일 이름을 배열의 항목으로 추가합니다. 파일 확장자를 이름에 반드시 포함하십시오. 4. 사용textLabel.font = UIFont(name: "Pretendard-Regular", size: 13)Text("He..
-
[Swift] 데이터 타입 - 기본 자료형 (primitive data type)/Swift 2025. 5. 29. 18:50
안녕하세요 아렉스입니다 :> 오늘은 Swift의 기본 자료형에 대해 이야기 하겠습니다. Swift 에서는 명명된 타입(named type)과 복합 타입(compound type)의 두가지 종류가 있습니다. ## 명명된 타입(named type) 사용자 정의 명명된 타입 / 클래스 / 구조체 / 열거형 / 프로토콜을 포함합니다.Swift 표준 라이브러리는 배열, 딕셔너리, 그리고 옵셔널 값을 나타내는 타입을 포함하여 일반적으로 사용되는 명명된 타입을 정의합니다. 숫자, 문자, 그리고 문자열을 나타내는 데이터 타입 (Data types) 또한 명명된 타입에 속합니다.데이터 타입 (Data types) 은 다른 언어에서 일반적으로 기본 또는 원시라고 간주됩니다 기본 자료형으로는 정수와 부동 소수점 정수Swi..
-
[SPM] Local Package 사용 시 변경 사항이 반영 되지않을 때 2025. 5. 27. 14:41
안녕하세요 아렉스입니다 :> 오늘은 Local Package 변경 사항 반영이 안되는 현상에 대해 얘기해 보겠습니다. 발생한 일Game Controller의 입력을 받아오는 신규 기능을 작업하며,기존 GameControllerManager 파일이 비대해져 ControllerInput 파일로 분리하였습니다.파일이 분리된 것을 컴파일러가 인식하지못해 빌드가 되지않았습니다.ControllerKit/ └─ Sources/ └─ Controller/ ├─ ControllerInput.swift // ⛑️ 기존 코드에서 분리한 파일 └─ GameControllerManager.swift 해결법매번 모든 패키지를 빌드하면 오래 걸리기 때문에, Xcode 내부적으로 패키지 정..
-
[macOS] Dock 에서 아이콘 없애기 - Application is agent/mac OS 🖥 2025. 5. 22. 01:05
안녕하세요 아렉스입니다 :> 오늘은 에이전트 앱 설정에 대해 얘기해 보겠습니다. macOS 앱 빌드시 Dock에 아이콘이 표출됩니다. 백그라운드에서 실행되는 프로그램을 Apple은 데몬과 에이전트로 나누어 부릅니다.데몬(시스템 전체 백그라운드 프로그램) / 에이전트(특정 사용자를 대신하여 작동하는 프로그램) 오늘 알아볼 것은 에이전트 앱 라고 합니다. info.plist 의 Application is agent (UIElement) 키 값을 통해 Dock 표시 여부를 설정할 수 있습니다. Application is agent (UIElement) 키 값은는 앱이 백그라운드에서 실행되고 Dock에 나타나지 않는 에이전트 앱인지 여부를 나타내는 부울 값입니다. 에이전트란 ?에이전트는 특정 사용자를 대신..
-
[WidgetKit] WidgetKit 정책과 타임라인(Timeline) 매커니즘/Widget 2025. 5. 21. 15:07
안녕하세요 아렉스입니다 :> 오늘은 WidgetKit 매커니즘에 대해 얘기해 보겠습니다.전반적인 구조는 2025.05.21 - [/Widget] - [WidgetKit] WidgetKit 간단하게 알아보기 보고 오시면 도움이 됩니다. 위젯은 기존 iOS 앱과 다른 라이프사이클 매커니즘을 가집니다.또한 정책이 명확하기 때문에, 테스트 간 정책에 따라 정상적인 동작 여부를 구분할 수 있습니다.WidgetKit 정책 WidgetKit은 배터리와 리소스를 보호하기 위해 위젯 새로고침에 하루 단위 예산을 두고 있습니다.위젯을 다시 로드하면 CPU, 네트워크, 배터리가 소모되며, 성능 및 배터리 보호를 위해 업데이트 빈도와 횟수를 최소화해야 합니다. Widget 시스템은 사용자의 행동을 배우고, 학습 기간 동안은..
-
[WidgetKit] WidgetKit 간단하게 알아보기/Widget 2025. 5. 21. 15:05
안녕하세요 아렉스입니다 :> 오늘은 WidgetKit 에 대해 얘기해 보겠습니다. iOS 개발에서 WidgetKit은 사용자가 iOS 홈 화면, 잠금 화면, 또는 StandBy 모드에서 앱의 중요한 정보를 빠르고 간편하게 확인할 수 있게 해주는 위젯을 만들 때 사용하는 프레임워크WidgetKit이란?Apple의 위젯 개발 프레임워크iOS 14 이상부터 도입SwiftUI 기반으로 작동앱의 정보를 홈 화면, 잠금 화면, StandBy 등 다양한 위치에 작고 가볍게 시각적으로 표시WidgetKit으로 무엇을 할 수 있는가 ?위젯스마트 스택 지원워치 컴플리케이션라이브 액티비티컨트롤 위젯 위젯은 크게 configurable, nonconfigurable 두개의 타입으로 볼 수 있습니다. @main(시작점)부터 ..