[iOS] Live Activity 알아보기

2024. 8. 9. 06:22·Apple/iOS
728x90
반응형

안녕하세요! 피피아노입니다 🎵

 

이번 포스팅에서는 Live Activity를 사용해보고 싶어서 사용하기 전 간단히 기술 조사를 하고 정리를 해보려고 합니다. 

 

그럼 바로 시작해보겠습니다!

 

Live Activity

라이브 액티비티는 앱의 최신 데이터를 아이폰 또는 아이패드 잠금화면과 다이나믹 아일랜드(Dynamic Island)에 표시해서 사용자가 라이브 정보를 한눈에 확인하고 관련된 작업을 빠르게 수행할 수 있도록 해주는 기능입니다.

Dynamic Island (출처: Apple)

 

라이브 액티비티는 사용자 인터페이스에 WidgetKit 기능과 SwiftUI를 사용하며, ActivityKit의 역할은 각 라이브 액티비티의 수명 주기를 처리하는 것입니다. 

 

 

라이브 액티비티에는 제약조건이 있는데 어떤 조건이냐면!

 

라이브 액티비티는 앱이 종료되지 않는 이상 최대 8시간 동안 지속되며(8시간이 지나면 시스템이 자동으로 종료), 종료 후 4시간까지 잠금 화면에 표시될 수 있다는 것입니다.

 

결과적으로 라이브 액티비티는 최대 12시간 동안 잠금 화면에 남아 있을 수 있는 거죠!

 

 

그리고 시스템은 라이브 액티비티의 이미지 자산이 디바이스의 프레젠테이션 크기보다 작거나 같은 해상도를 사용하도록 요구하는데 이 조건을 지키지 않을 경우 라이브 액티비티를 사용하지 못할 수 있습니다.

 

※ActivityKit 업데이트와 ActivityKit 푸시 알림에 대한 데이터를 포함한 라이브 활동의 정적 및 동적 데이터는 모두 합쳐 4KB를 초과할 수 없음!!!!

 

컴팩트하고 최소한의 프레젠테이션(compact and minimal presentations)

라이브 액티비티는 해당 기능을 지원하는 기기(글을 쓰는 시점에서는 아이폰 14 프로 라인업과 아이폰 15 라인업)의 Dynamic Island에 나타납니다.

 

만약 내가 하나 이상의 라이브 액티비티를 시작하고 다른 앱에서 라이브 액티비티를 시작하지 않으면, 컴팩트한 leading 프레젠테이션과 trailing 프레젠테이션이 함께 나타나 응집력 있는 프레젠테이션을 형성합니다.

하나의 앱에서 실행했을 경우 (출처: Apple)

 

반면에 여러 앱이 라이브 액티비티를 시작하는 경우도 있을 텐데 

 

이런 경우에는 시스템은 어떤 라이브 액티비티가 표시될지 선택하고 각각에 대한 minimal 프레젠테이션을 사용하여 2개의 라이브 액티비티를 표시합니다. 하나의 minimal 프레젠테이션은 Dynamic Island에 연결된 상태로 표시되고 다른 하나는 독립적으로 분리되어서 표시됩니다. 또한 분리된 minimal 프레젠테이션은 대기 모드의 아이폰 잠금 화면에 표시됩니다. 

2개 이상의 앱에서 실행했을 경우 (출처: Apple)

 

확장된 프레젠테이션(expanded presentation)

앞에서 본 컴팩트하고 미니멀한 프레젠테이션 외에도 확장된 프레젠테이션(expanded presentation)을 지원해야 합니다.

 

expended 프레젠테이션은 사람이 컴팩트하거나 미니멀한 프레젠테이션을 만지고 잡을 때 나타나게 되며, 라이브액티비티가 업데이트될 때에도 잠깐 나타나게 됩니다.

expanded presentation (출처: Apple)

 

expanded Live Activity에 나타나는 뷰를 렌더링하기 위해 시스템은 expanded 프레젠테이션을 아래 사진처럼 여러 영역으로 나누게 됩니다.

영역 설명 (출처: Apple)

 

  • 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

 

Displaying live data with Live Activities | Apple Developer Documentation

Display your app’s data in the Dynamic Island and on the Lock Screen and offer quick interactions.

developer.apple.com

여기에 있는 문서를 확인해주시면 됩니다!

 

오늘은 여기까지 :)


감사합니다.

 

잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > iOS' 카테고리의 다른 글

[iOS/CoreML] Core ML로 구현하는 온디바이스 AI  (2) 2025.05.11
[iOS] CocoaPods 알아보기  (7) 2024.08.13
[iOS] RESTful API 완벽 이해하기  (0) 2024.07.22
[iOS] Core Data는 뭘까?  (0) 2024.05.24
[iOS] Open API 연결하는 방법  (0) 2024.05.19
'Apple/iOS' 카테고리의 다른 글
  • [iOS/CoreML] Core ML로 구현하는 온디바이스 AI
  • [iOS] CocoaPods 알아보기
  • [iOS] RESTful API 완벽 이해하기
  • [iOS] Core Data는 뭘까?
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (203)
      • Apple (121)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (22)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Initializers
    연산자
    오블완
    비동기
    SWIFT
    UIKit
    Optional
    디자인패턴
    메서드
    visionOS
    이니셜라이저
    Vision Pro
    티스토리챌린지
    옵셔널
    네트워크
    함수
    변수
    프로퍼티 래퍼
    배열
    제어문
    ios
    Xcode
    프로세스
    combine
    클래스
    swiftUI
    운영체제
    코딩테스트
    스위프트
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[iOS] Live Activity 알아보기
상단으로

티스토리툴바