일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- test
- 오블완
- 티스토리챌린지
- ios
- swiftUI
- Unit
- 1주차
- 2023
- @Model
- 대학생협
- 프로그래머스
- KoreaMango
- watchapp
- SwiftData
- unittest
- tutorial
- Apple
- 3주차
- 회고
- 콩세알프로젝트
- Swift
- tutorials
- WWDC
- 2주차
- ActivityKit
- RxSwift
- xcode15
- 개발자
- watchkit
- Flutter
- Today
- Total
KoreaMango 나무
[WWDC] Meet ActivityKit 본문
Meet ActivityKit - WWDC23 - Videos - Apple Developer
Live Activity
- 이벤트나 작업 진행 상황을 지켜보는 방법
- Live Activity는 시작과 끝이 나뉘어 있으며 백그라운드 앱 런타임이나, 푸시알림을 통해 실시간 업데이트를 제공한다.
- Dynamic Island는 한번에 최대 2개의 실시간 현황을 표시할 수 있다.
- 하나는 TrueDepth 카메라에 붙어서 나타나고 다른 하나는 별도의 뷰에서 렌더링 된다.
- 두 실시간 현황 모두 최소형 표시 방식을 사용한다.
- 사용자는 언제든지 실시간 현황을 길게 눌러서 확장형으로 표시하고 더 많은 정보를 빠르게 확인할 수 있다.
- iOS 17에는 잠금화면과 다이나믹 아일랜드 뿐만 아니라 대기 모드일 때도 Live Activity가 나타난다.
- WidgetKit과 SwiftUI를 사용해 실시간 현황에 상호 작용성을 추가할 수 있다.
- 버튼이나 토글을 추가해 사용자 경험을 향상시킬 수 있다.
- Bring Widgets to life를 통해 위젯에 버튼 넣는 방법을 알아볼 수 있다.
Bring widgets to life - WWDC23 - Videos - Apple Developer
- Live Activity는 ActivityKit 프레임워크에 의존하며, 앱이 수명 주기를 요청 및 업데이트, 관리할 수 있게 한다.
- 앱이 Foreground 에 있을 때 실시간 현황을 요청할 수 있다.
- 앱이 특정한 사용자 동작 이후에 실시간 현황을 요청해야만 한다.
- 예를 들면 이벤트를 팔로우하거나, 작업을 시작하는 동작
- API는 잠금화면에서 세 가지 Dynamic island 표시까지 모든 표현 방식을 지원해야 한다.
- 대기모드일 땐 잠금화면 표현 방식을 화면에 맞게 확대한다.
- Live Activity Notification을 통해서 실시간 현황을 원격으로 업데이트할 수 있다.
- Push Noti로 어떻게 관리하는지 알고 싶으면 Update Live Activities with push noti를 참고하자.
Life Cycle of Live Activity
- Request Activity
- Update Content
- Observe Activity State
- End
1. Request Acitivity
앱을 foreground 에 표시하고 앱을 구성하면 필요한 활동 요청 데이터와 초기 컨텐츠를 얻을 수 있다.
Live Activity을 요청하려면 ActivityAttribues를 구현하여 Live Activity의 정적 및 동적 데이터 집합을 정의해야한다.
동적 데이터 집합은 캡슐화 해서 커스텀 ContentState를 정의한다.
이 프로퍼티가 바뀔 때마다 실시간 현황 UI가 업데이트되어 모험의 현 상태를 화면에 표시할 수 있게 된다.
Push Noti Type은 Live Activity가 ActivityKit Push Noti를 통해 동적 컨텐츠에 업데이트를 수신하는지 알려준다.
Activity.request
2. Update
Dynamic Attributes는 실시간 현황을 업데이트할 때 알려준다.
activity.update 업데이트된 콘텐츠와 알림 구성을 통해 활동 객체의 업데이트 API를 호출할 수 있다.
3. Observe Activity State
활동 상태 변화는 실시간 현황의 수명 주기 내에서 언제든 일어날 수 있습니다 상태는 네 가지입니다 started, finished dismissed, stale이 있다.
활동 객체의 activityStateUpdates API로 비동기식 업데이트 수신 시 이러한 상태를 관찰한다.
activity.activityStateUpdates
또한 활동 객체의 ActivityState를 통해 상태를 확인해 필요시 동기적으로 회수할 수 있다.
activity.activityState
4. End
활동을 종료하기 위해 우선 최종 콘첸츠를 생성해야 한다.
콘텐츠는 최종 상태를 보여준다.
activity.end
Building Live Activity
Widget
- WidgetBundle은 2개의 위젯을 가진다.
- 또한 실시간 현황 구성을 추가하기 위해 ActivityConfiguration을 추가한다.
- ActivityConfiguration은 위젯 인프라를 활용하며 ActivityConfiguration: Widget
- 본문에 WidgetConfiguration을 반환해야 한다.
- ActivityConfiguration 객체를 생성하여 실시간 현황을 알 수 있다.
- ActivityViewContext를 제공하여 정적 및 동적 속성과 활동 ID를 저장한다.
- 이 Context는 Attributes Type을 기반으로 생성된다.
- 이 유형은 활동 요청(Activity Request) 시 사용되는 속성과 일치해야 한다.
- ActivityConfiguration의 첫 번째 클로저는 잠금 화면 UI를 지정한다.
- 활동 업데이트에 따라 View Context가 변경될 때 마다 매번 UI가 변경된다.
- 위젯과 마찬가지로 실시간 현황의 잠금 화면 UI크기는 제공하지 않고 시스템이 적합한 크기를 정하도록 한다.
Dynamic Island
- 프레젠테이션 방식은 압축형, 최소형, 확장형 총 3개이다.
- 시스템에서 실행 중인 활동이 앱의 실시간 현황뿐인 경우 압축형
- 압축형에는 leading과 trailing이 있다.
- ActivityConfiguration 객체의 DynamicIsland 클로저에서 다시 View Context에 접근하여 expanded와 CompactLeading, compactTrailing minimal 뷰를 생성한다.
- 두개 이상의 앱이 실시간 현황을 실행하면, 어떤 실시간 현황을 보여줄지 시스템에서 선택하고 최소형 프레젠테이션으로 둘 다 표시한다.
- 하나는 Dynamic Island에 붙어서 나타나고 하나는 분리되어서 나타난다.
- 다이나믹 아일랜드를 길게 누르면, 확장형이 나타나게 된다.
'iOS > ActivityKit' 카테고리의 다른 글
[iOS] Make Dynamic Island Timer (4) | 2024.09.19 |
---|