WWDC23: Meet ActivityKit
https://developer.apple.com/documentation/ActivityKit
https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities
- Live Activity μ λν κ°μ
- Live Activity μ μλͺ μ£ΌκΈ° (Life cycle)
- Live Activity UI ꡬμΆνκΈ°
Live Acitvity overview
Live Activity λ μ΄λ²€νΈλ μμ μ§ν μν©μ νλμ μμλ³Ό μ μλ λ°©λ²μ΄λ€.
- κ°κ°μ μμκ³Ό λμ κ°μ§κ³ μκ³ ,
- λ°±κ·ΈλΌμ΄λ μ± λ°νμμμ μ€μκ° μ λ°μ΄νΈλ₯Ό μ 곡νκ±°λ,
- νΈμ μλ¦Όμ μ¬μ©ν΄μ μ격μΌλ‘ μ 곡ν μλ μλ€.
iPhone 14 Pro, Pro Max μμλ Dynamic Island λ₯Ό ν΅ν΄ Live Activity κ° νμλλ€.
- μ±μ΄ λ°±κ·ΈλΌμ΄λμ μμ λ μμ€ν μ 체μ Live Activity λ₯Ό νμνκ³ ,
- Live Activity λ "compact" νλ μ ν μ΄μ μ μ¬μ©ν΄μ λ λλ§λκ³ , νλ²μ μ΅λ 2κ°κ° νμλλ€.
- "minimal" μ¬μ΄μ¦λ‘ νμλκ³ , κΈΈκ² λλ₯΄λ©΄ "expanded" νλ μ ν μ΄μ μΌλ‘ λ³Ό μ μλ€.
Interactive Live Activities
iOS17 μμλ WidgetKit, SwiftUI λ₯Ό μ¬μ©ν΄μ λ²νΌμ΄λ ν κΈμ μΆκ°νλ λ± Live Acitvity μ μνΈμμ© κΈ°λ₯μ μΆκ°ν μ μλ€.
overview
- Live Activity λ ActivityKit νλ μμν¬μ μ¬μ©ν΄μ μλͺ μ£ΌκΈ°λ₯Ό μμ², μ λ°μ΄νΈ κ΄λ¦¬ν μ μλλ‘ μ§μλλ€.
- SwiftUI μ WidgetKit μ μ¬μ©ν΄μ μ μΈμ μΌλ‘ λ°°μΉλλ€.
- μ±μ΄ ν¬κ·ΈλΌμ΄λ μνμ μμ λ Live Activity λ₯Ό μμ²ν μ μκ³ , μ¬μ©μμ μ‘μ
μ΄ μλ κ²½μ°μλ§ μμ²ν΄μΌ νλ€.
- Live Activity λ μλ¦Όκ³Ό λΉμ·νκ² μ¬μ©μκ° μ‘°μ νκ³ , μ±μμ μ½κ² λ μ μλ€.
- μ κΈ νλ©΄κ³Ό λ€μ΄λλ―Ή μμΌλλμ μΈκ°μ νλ μ ν μ΄μ μ μ§μν΄μΌνλ€.
- λ°±κ·ΈλΌμ΄λ λ°νμ μΈμλ νΈμ μλ¦Όμ ν΅ν΄ μ격μΌλ‘ μ
λ°μ΄νΈ ν μ μλ€.
- νΈμ νμ μ΄ liveactivity μΈ νΈμλ₯Ό λ³΄λΌ μ μλ€.
- WWDC23: Update Live Activities with push notifications
Lifecycle of Live Activities
- Request : activity μ μμ²μ λ³΄λ΄ μμνκΈ°
- Update : μ΅κ·Ό μ½ν μΈ λ‘ μ λ°μ΄νΈνκΈ°
- Observe activity state : λ³νλλ μνλ₯Ό κ΄μ°°νκΈ°
- End : μμ μ’ λ£μ activity λ μ’ λ£νκΈ°
Request
ν¬κ·ΈλΌμ΄λ μνμ μ±μμ μ΄κΈ° μ½ν μΈ μ νμν activity request data λ₯Ό κ°λλ‘ κ΅¬μ±νλ€.
https://developer.apple.com/documentation/activitykit/activityattributes
ContentState λΌλ μ΄λνμ μ΄ Live Activity μ λ€μ΄λλ―Ή μ½ν μΈ λ₯Ό νμνλ€.
- hero λΌλ μ μ λ°μ΄ν° νλλ₯Ό κ°κ³ μλ AdventureAttributes
- νμ΄λ‘μ HP λ μ΄λ²€νΈ μ€λͺ
μ λν ContentState λ₯Ό μ μνλ€.
- ν΄λΉ μμ±λ€μ΄ λ³κ²½λλ©΄ live activity UI κ° μ λ°μ΄νΈλλ€.
- Content State μ μ΄κΈ°κ°μ μ€μ νκ³ , ActivityContent λ₯Ό μμ±ν΄μ€λ€.
- staleDate λ activity μ½ν μΈ κ° λ³΄μ¬μ£Όλ λ°μ΄ν°κ° out of date μΌλ‘ κ°μ£Όλλ μκΈ°λ₯Ό μμ€ν μ μ릴 μ μλ κ°μ΄λ€.
- relevenceScore λ live activity κ° μ°μ μμλ₯Ό μ€μ νλ κ°μ΄λ€. λκ° μ΄μ activity κ° λ³΄μ¬μ§λ μ°μ λκ±°λ, μ κΈ νλ©΄μμμ λμμ μ¬μ©λλ€.
- ActivityAttributes, ActivityContent μ push type μ μ€μ ν΄μ request λ₯Ό 보λΈλ€.
- push type μ νΈμλ₯Ό ν΅ν΄ λμ μ½ν μΈ μ λν μ λ°μ΄νΈλ₯Ό μμ νλμ§ μ¬λΆλ₯Ό λ»νλ€.
- nil λ‘ μ€μ νκ² λλ©΄ λ‘컬 μ λ°μ΄νΈλ§ λ°μ μ μμμ λ»νλ€.
Update
- dynamic attirubtes λ live activity λ₯Ό μ λ°μ΄νΈν μκΈ°λ₯Ό μλ €μ€λ€.
- 체λ ₯μ΄ λ³κ²½λ λ ContentState λ₯Ό μλ‘κ² λ§λ€κ³ , Alert λ₯Ό μμ±νκ³ , live activity μ μ λ°μ΄νΈ API λ₯Ό νΈμΆνλ€.
Observe activity state
- live activity μ μλͺ
μ£ΌκΈ° λ΄μμλ μΈμ λ μ§ Activity State λ λ³κ²½λ μ μλ€.
- started, finished, dismissed, stale 4κ°μ§ μν
- activityStateUpdates API λ₯Ό ν΅ν΄ μμ μνλ€μ κ΄μ°°ν΄μ μ λ°μ΄νΈλ₯Ό λΉλκΈ°λ‘ μμ ν μ μλ€.
- activityState API λ₯Ό ν΅ν΄μλ λκΈ°μ μΌλ‘ μνλ₯Ό 체ν¬ν μ μλ€.
End
- live activity λ₯Ό μ’ λ£νκΈ° μν΄μ κ·Έμ λ§λ ContentState λ₯Ό μμ±νκ³ , dismissalPolicy λ₯Ό μ§μ ν΄μ activity λ₯Ό μ’ λ£νλ€.
Building Live Activity UI
- WidgetBundle μ Live Activity μ κ΄ν μ€μ μ μΆκ°ν΄μ€λ€.
- μμ ―κ³Ό λμΌνκ² WidgetConfiguration νμ μ body λ₯Ό μμ±ν΄μ€λ€.
- ActivityConfiguration κ°μ²΄λ₯Ό ν΅ν΄μ Live Activity μ μ½ν μΈ μ λν΄ μ€μ ν μ μκ³ ,
- presentation ν΄λ‘μ λ§λ€ νλ©΄μ 보μ¬μ§ UI λ₯Ό ꡬμ±ν μ μλ€.
Lock screen presentation
- 첫λ²μ§Έ ν΄λ‘μ λ μ κΈ νλ©΄μ λν UI λ₯Ό μ§μ νλ€.
Compact presentation
- compact νμ μμλ leading κ³Ό trailing μμμ λ°λ‘ μ€μ ν μ μλ€.
Minimal presentation
- μ¬λ¬ (μ΅λ λκ°..) μ±μ΄ Live Activity μ λμμ§ κ²½μ°μλ minimal ννλ‘ λμμ§λ€.
- νλλ λ€μ΄λλ―Ή μμΌλλμ μΌμͺ½νΈμ live activity κ° λνλκ³ , λ€λ₯Έ νλλ μ€λ₯Έμͺ½μ λΆλ¦¬λ μμμΌλ‘ λνλλ€.
Expand presentation
- Live activity λ₯Ό κΎΉ λλ₯΄λ©΄ expand ννλ‘ λ³Ό μ μλλ°, μ΄ μμλ Leading, Trailing, Center, Bottom μΌλ‘ λλμ΄μ Έ μλ€.
- leading
- trailing
- bottom
Designing Live Activity UI
- νμμ μΈ μ½ν μΈ λ₯Ό λ΄κ³ , μ¬ννκ² λμμΈνλ κ²μ΄ μ€μνλ€ π
'π iOS > WWDC' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] WWDC23: Discover Observation in SwiftUI / iOS17+ (1) | 2023.10.14 |
---|---|
[WWDC2017] Love at First Launch (0) | 2023.05.24 |
[WWDC21] Discover concurrency in SwiftUI (1) | 2023.05.18 |
[WWDC20] The Push Notifications primer (APNs / iOS νΈμ λ±λ‘) (0) | 2023.02.14 |
[WWDC18] iOS Memory Deep Dive (2) | 2022.11.27 |