안녕하세요.
|
개발자 이융의입니다.

thumbnail
Swift - Firebase 사용하기 (1)

Firebase Authentication Firebase 사이트에서 프로젝트를 만들고, 해당 프로젝트에서 iOS 앱을 만들고 GoogleService-Info.plist 파일을 추가 그리고 Firestore configure 코드(초기화 코드)까지 추가한 상태이다. 서버 백엔드를 따로 구축한다고 해도, Firebase Authentication은 따로 쓰는 것도 괜찮다. 왜냐하면 Firebase Authentication은 따로 만드는 것보다 더 간편하고 효율적이기 때문이다. Firebase auth 에서 볼 수 있듯이 인증 한도도 일일 활성사용자량 3000명 정도로, 초기 앱에 사용하기에는 괜찮은 편이다. 사용자의 인증 상태를 관리하는 AuthViewModel 코드를 살펴보자. listenToAuthState 라는 함수를 호출 시 addStateDidChangeListener 를 통해 파이어베이스 서버로부터 인증 상태를 계속 관리할 수 있다. 사용자의 인증 상태가 변경될 때마다…

Dictionary - init(grouping:by:)

init(grouping:by:) func groupMenuByCategory(_ menu: [MenuItem]) -> [MenuSection] { if menu.isEmpty { return [] } return Dictionary(grouping: menu, by: { $0.category }) .map { key, value in MenuSection(category: key, items: value) } .sorted { $0.category > $1.category } } 이 함수는 MenuItem 배열을 받아서 카테고리별로 그룹화하고, 각 그룹을 MenuSection 배열로 변환합니다. 각 단계는 다음과 같습니다: 빈 배열 검사: if menu.isEmpty { return [] } 메뉴가 비어 있는 경우, 빈 배열을 반환합니다. 그룹화: Dictionary(grouping: menu, by: { $0.category }) 메뉴 항목을 category 기준으로 그룹화합니…

Youtube API, AVFoundation, SharePlay 사용

개요 지난 AVFoundation-시작하기 포스트에 이어, 직접 앱을 개발해보기로 했다. 내가 개발하기로 한 앱의 초기 요구사항은 다음과 같다. 앱 초기 디자인은 Youtube Music App 을 클론 미디어 콘텐츠는 Youtube Search API 를 사용 AVFoundation, AVKit 등을 사용하여 미디어 플레이어 앱 개발하기 [추가] WWDC 2023에 공개된 Share Play의 기능 추가해보기 문제 해결 과정 Draggable Sheet View 구현 과정 How to create Draggable Sheet View? Youtube Music App 의 경우, Draggable Sheet View 가 존재한다. 그래서 처음에는 일반적인 sheet 모디파이어로는 구현할 수 없을 것이라 생각하고 DragGesture 를 추가하는 쪽으로 생각했다. 그러나 더욱 간단한 방법으로 시도해보았다. presentationDetants 값에서 sheet view의 최소 높이와 …

MapKit - 현재위치를 사용한 경로 탐색 앱 만들기

MapKit 을 사용한 예제 앱 개발 이번엔 최신 코드인 @Observable 매크로를 사용하여 viewModel 을 사용하였습니다. @Observable는 @Published 를 따로 쓰지 않아도 상태 추적이 가능하도록 해주는 매크로입니다. MapViewModel 생성 @Observable 를 사용한 ViewModel 은 View에서 @StateObject가 아닌, @State로 불러올 수 있습니다. 만약 하위 뷰에서 해당 viewModel 을 사용하고자 한다면? 바인딩도 필요없고, environmentObject도 사용하지 않습니다. ContentView 에서 viewModel 을 완전히 소유하고 있기 때문에, 그냥 변수를 전달하면 됩니다. Search Bar 그리고 이제 Navigation Title 과 검색바(searchable)를 추가하였습니다. 그리고 mapStyle 을 사용하기 위해서, viewModel 에 MapStyle 타입의 프로퍼티를 추가하고, mapStyle …