내용 특정 widget 에서 앱으로 접근 시를 구분하여 분기 처리를 대응해보자. 위젯의 widgetURL() 로부터 넘겨준 URL 의 쿼리를 매개변수로 사용해보자. 우선, widget 으로 앱에 접근할 때의 상황은 크게 두 가지로 나뉩니다. 앱을 실행시켜서 foreground 로 진입 background 에서 foreground 로 진입 이 상황들에 대응하기 위해서 다음의 메서드를 SceneDelegate 에서 사용할 수 있습니다. scene(_:willConnectTo:options:) delegate(UISceneDelegate) 에게 앱에 scene 추가에 대해서 알립니다. // scene: app 에 연결되는 scene 객체. // session: scene configuration 에 대한 세부..
목표 configurable widget 의 기본값을 설정해보겠습니다. 명함이 없다면 엠티뷰를, 명함이 있다면 첫 번째 명함을 기본값으로 설정해보겠습니다. 첫 번째 명함이 바뀌는 경우, 해당 명함이 삭제되는 경우, 로그아웃 및 회원탈퇴에 대응해서 기존의 기본값을 업데이트해보겠습니다. 두 가지 방법을 통해서 Widget 의 기본값을 설정해 보겠습니다. 첫 번째 방법은 IntentHandler 에서 서버통신을 통해 Intent 의 기본값을 설정하여서 Widget 의 getSnapshot(for:in:completion:) 에서 설정하는 것이고, 두 번째 방법은 Widget 의 getSnapshot(for:in:completion:) 에서 서버통신을 통해 설정하는 것입니다. 들어가기 전 두 가지 방법을 적용해..
내용 iOS 앱에 화면 추적, 이벤트 추적을 위한 GA(Google Analytics) 를 적용해 보겠습니다. 잘 로깅되고 있는지 Xcode 에서 확인해 보겠습니다. 다음을 참고해서 정리하였습니다. Google 애널리틱스 시작하기 | Firebase용 Google 애널리틱스 시작하기 CocoaPods 을 활용한 SDK 추가 pod 'Firebase/Analytics' 앱 대리자의 application(_:didFinishLaunchingWithOptions:) 메서드에서 FirebaseApp 공유 인스턴스를 구성합니다. // AppDelegate.swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launch..
아래 개발자 문서를 참고해서 timeline 이 변경되었을 때 WidgetKit 에 알리는 방법에 대해 알아보겠습니다. Keeping a widget up to date | Apple Developer Documentation 그리고 다음의 목표를 구현해보겠습니다. 회원탈퇴 or 로그아웃할 때는 위젯을 엠티뷰로 업데이트하고, 위젯이 표현하는 명함이 삭제될 때는 위젯을 대표명함(첫 번째 명함)으로 업데이트해보겠습니다. Inform WidgetKit when a timeline changes 무언가 widget 의 현재 timeline 에 영향을 미칠 때, 앱이 WidgetKit 에게 새로운 timeline 을 요청할 수 있습니다. 예를 들어, 게임 위젯 예제에서 팀원이 캐릭터에게 치유 물약을 주었다는 푸시..
내용 최소버전과 관련하여 위젯이 등장하지 않던 문제 원인 파악 및 해결 iOS deployment target 15.0 으로 설정된 상태에서 잠금 화면 위젯(16.0+) 대응해보기 🚨 문제 상황 인식 메인 앱 타겟의 최소 버전은 15.0 이었습니다. 16.0 버전의 아이폰에서 앱은 설치할 수 있지만, 위젯을 설치할 수 없었습니다. 그 이유는 widget extension 의 최소 버전이 16.2 로 설정되어 있었기 때문이었습니다. 왜 16.2 였었나? PreviewProvider 프로토콜을 채택하여 preview 하는 struct 에서 Live Activity 의 미리보기를 만들 수 있는 메서드가 있는데 해당 메서드의 지원 버전이 16.2+ 이기 때문이었습니다. previewContext(_:isStal..
내용 다음과 같이 YPImagePicker 를 통해 구현해보자. 사진 라이브러리에서만 이미지를 가져온다. 하나의 사진만 선택할 수 있도록 한다. 이전에 고른 사진이 선택된다. crop 할 수 있는 비율을 커스텀한다. 필터는 사용하지 않는다. 이미지를 따로 저장하지 않는다. 이미지 선택 시와 취소 시에 notification 을 post 한다. 우선, YPImagePicker 를 사용하는 이유 이전에는 crop 에 대한 기능을 기대하며 UIImagePicker 를 사용하였는데 크기를 커스텀할 수 없었습니다. 많은 개발자들의 아쉬움을 여러 글들에서 읽을 수 있었고 다음의 이유로 YPImagePicker 를 선택하였습니다. 원하는 사이즈로 crop 할 수 있는 이미지 라이브러리는 많이 없었고, 그 중 많은 사..
내용 FlexLayout 과 PinLayout 을 알아보고, 사용하여 UI를 구현해보자. 목표 : 아래의 [업데이트를 위한 팝업 뷰]를 구현해보겠습니다. 📌 FlexLayout 과 PinLayout 의 사용방법에 대해서는 게시글이 많고, 깃허브 리드미를 읽으면 쉽게 알 수 있을 만큼 문법이 간편합니다. 📌 이 글에서는 예시 코드에서 확인할 수 있는 사용방법에 대해서 간단하게 주석을 작성하고, 실제로 특정 뷰를 만드는데 적용한 코드를 공유하는데 초점을 맞춰서 작성하였습니다. 1️⃣ why? FlexLayout? FlexLayout 에대해서 공식문서를 통해 정리해보겠습니다. https://github.com/layoutBox/FlexLayout UIStackView 를 개선한 프레임워크로써 AutoLayou..
- urlsession
- WWDC22
- CloneCoding
- configurable widget
- projectsetting
- Objective-C
- YPImagePicker
- IOS
- Swift
- containerBackground
- OpenSourceLibrary
- rxswift
- 2022 KAKAO TECH INTERNSHIP
- SwiftUI
- APNS
- Algorithm
- Protocol
- Firebase
- MVVM
- MOYA
- async/await
- 서버통신
- RxCocoa
- Widget
- WidgetKit
- UserDefaults
- github
- WWDC
- watchOS
- Notification
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday