안녕하세요! 피피아노입니다 🎵
이번 포스팅에서는 Live Activity를 사용해보고 싶어서 사용하기 전 간단히 기술 조사를 하고 정리를 해보려고 합니다.
그럼 바로 시작해보겠습니다!
Live Activity
라이브 액티비티는 앱의 최신 데이터를 아이폰 또는 아이패드 잠금화면과 다이나믹 아일랜드(Dynamic Island)에 표시해서 사용자가 라이브 정보를 한눈에 확인하고 관련된 작업을 빠르게 수행할 수 있도록 해주는 기능입니다.
라이브 액티비티는 사용자 인터페이스에 WidgetKit 기능과 SwiftUI를 사용하며, ActivityKit의 역할은 각 라이브 액티비티의 수명 주기를 처리하는 것입니다.
라이브 액티비티에는 제약조건이 있는데 어떤 조건이냐면!
라이브 액티비티는 앱이 종료되지 않는 이상 최대 8시간 동안 지속되며(8시간이 지나면 시스템이 자동으로 종료), 종료 후 4시간까지 잠금 화면에 표시될 수 있다는 것입니다.
결과적으로 라이브 액티비티는 최대 12시간 동안 잠금 화면에 남아 있을 수 있는 거죠!
그리고 시스템은 라이브 액티비티의 이미지 자산이 디바이스의 프레젠테이션 크기보다 작거나 같은 해상도를 사용하도록 요구하는데 이 조건을 지키지 않을 경우 라이브 액티비티를 사용하지 못할 수 있습니다.
※ActivityKit 업데이트와 ActivityKit 푸시 알림에 대한 데이터를 포함한 라이브 활동의 정적 및 동적 데이터는 모두 합쳐 4KB를 초과할 수 없음!!!!
컴팩트하고 최소한의 프레젠테이션(compact and minimal presentations)
라이브 액티비티는 해당 기능을 지원하는 기기(글을 쓰는 시점에서는 아이폰 14 프로 라인업과 아이폰 15 라인업)의 Dynamic Island에 나타납니다.
만약 내가 하나 이상의 라이브 액티비티를 시작하고 다른 앱에서 라이브 액티비티를 시작하지 않으면, 컴팩트한 leading 프레젠테이션과 trailing 프레젠테이션이 함께 나타나 응집력 있는 프레젠테이션을 형성합니다.
반면에 여러 앱이 라이브 액티비티를 시작하는 경우도 있을 텐데
이런 경우에는 시스템은 어떤 라이브 액티비티가 표시될지 선택하고 각각에 대한 minimal 프레젠테이션을 사용하여 2개의 라이브 액티비티를 표시합니다. 하나의 minimal 프레젠테이션은 Dynamic Island에 연결된 상태로 표시되고 다른 하나는 독립적으로 분리되어서 표시됩니다. 또한 분리된 minimal 프레젠테이션은 대기 모드의 아이폰 잠금 화면에 표시됩니다.
확장된 프레젠테이션(expanded presentation)
앞에서 본 컴팩트하고 미니멀한 프레젠테이션 외에도 확장된 프레젠테이션(expanded presentation)을 지원해야 합니다.
expended 프레젠테이션은 사람이 컴팩트하거나 미니멀한 프레젠테이션을 만지고 잡을 때 나타나게 되며, 라이브액티비티가 업데이트될 때에도 잠깐 나타나게 됩니다.
expanded Live Activity에 나타나는 뷰를 렌더링하기 위해 시스템은 expanded 프레젠테이션을 아래 사진처럼 여러 영역으로 나누게 됩니다.
- centerTrueDepth 카메라 아래에 콘텐츠를 배치합니다.
- leadingTrueDepth 카메라 옆에 있는 확장된 라이브 활동의 앞쪽 가장자리에 콘텐츠를 배치하고 그 아래에 추가 콘텐츠를 래핑합니다.
- trailingTrueDepth 카메라 옆에 있는 확장된 라이브 활동의 뒤쪽 가장자리에 콘텐츠를 배치하고 그 아래에 추가 콘텐츠를 래핑합니다.
- bottom콘텐츠를 선두, 후행, 중앙 콘텐츠 아래에 배치합니다.
확장된 라이브 액티비티에 나타나는 콘텐츠를 렌더링하기 위해서 시스템은 먼저 leading과 trailing 콘텐츠의 최소 너비를 고려하면서 center 콘텐츠의 너비를 결정합니다.
그런 다음 시스템은 수직 위치를 기준으로 선행 및 후행 콘텐츠를 배치하고 크기를 조정하게 됩니다.
기본적으로 leading과 trailing 위치는 동일한 양의 수평 공간을 받습니다.
*콘텐츠가 TrueDepth 카메라 옆의 leading 위치에 나타나기에 너무 넓은 경우에는 belowIfTooWide 수정자를 사용해서 leading 콘텐츠를 TrueDepth 카메라 아래에 렌더링 함!!
좀 더 자세한 내용을 알고 싶다면
https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities
여기에 있는 문서를 확인해주시면 됩니다!
오늘은 여기까지 :)
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > iOS' 카테고리의 다른 글
[iOS] CocoaPods 알아보기 (5) | 2024.08.13 |
---|---|
[iOS] RESTful API 완벽 이해하기 (0) | 2024.07.22 |
[iOS] Core Data는 뭘까? (0) | 2024.05.24 |
[iOS] Open API 연결하는 방법 (0) | 2024.05.19 |
[iOS] 화면 전환 방식 (Present, NavigationController + Source, NavigationController + Segue) (0) | 2024.03.24 |