이 페이지에서: Adobe Experience Platform Mobile SDK을 iOS 앱에 통합하여 잠금 화면 및 Dynamic Island에서 실시간 활동 업데이트를 등록, 표시 및 수신할 수 있습니다.
Adobe Experience Platform Mobile SDK은 Apple의 라이브 활동에 대한 내장된 지원을 제공합니다. 이렇게 하면 앱을 열지 않고도 앱이 Lock Screen 및 Dynamic Island에서 직접 실시간 동적 업데이트를 표시할 수 있습니다.
-
AEPMessaging, AEPMessagingLiveActivity, ActivityKit 모듈을 가져옵니다.
-
LiveActivityAttributes을(를) 준수하고LiveActivityData및ContentState특성을 포함합니다. -
SDK 초기화 후
Messaging.registerLiveActivity()을(를) 사용합니다. -
잠금 화면과 동적 섬 인터페이스 모두에 대해
ActivityConfiguration을(를) 구현합니다. -
라이브 활동은 Journey Optimizer을 통해 원격으로 또는 애플리케이션 코드 내에서 로컬로 시작할 수 있습니다.
-
Assurance용
LiveActivityAssuranceDebuggable을(를) 구현합니다.
올바른 구성 및 호환성을 위해 다음 최소 버전이 설치되어 있는지 확인하십시오.
필수 구성 요소:
-
iOS:
- iOS16.1 이상: 기본 라이브 활동 기능
- iOS 17.2+: Push-to-start 지원
- iOS 18+: 브로드캐스트 채널 지원
-
Xcode: 14.0 이상
-
Swift: 5.7 이상
-
종속성: AEPCore, AEPMessaging, AEPMessagingLiveActivity, ActivityKit
-
AEP Mobile SDK 버전: iOS Messaging 5.11.0 이상
1단계: 필요한 모듈 가져오기 import
시작하려면 먼저 AEPMessaging, AEPMessagingLiveActivity, ActivityKit 모듈을 가져와야 합니다.
import AEPMessaging
import AEPMessagingLiveActivity
import ActivityKit
2단계: 라이브 활동 속성 정의 attributes
LiveActivityAttributes 프로토콜을 준수하는 구조체를 만듭니다. 라이브 활동에 대한 정적 데이터 및 동적 콘텐츠 상태를 모두 정의합니다.
주요 구성 요소는 다음과 같습니다.
-
Adobe Experience Platform 관련 데이터가 포함된
liveActivityData(필수).- 개별 사용자의 경우:
LiveActivityData(liveActivityID: "unique-id")사용 - 브로드캐스트의 경우:
LiveActivityData(channelID: "channel-id")사용
- 개별 사용자의 경우:
-
정적 특성, 사용 사례와 관련된 사용자 지정 속성(예:
restaurantName). -
ContentState: 실시간 활동 라이프사이클 중에 업데이트할 수 있는 동적 데이터를 정의합니다.Codable및Hashable을(를) 준수해야 합니다. -
LiveActivityOrigin열거형은 활동이 앱 내에서 로컬로 시작되었는지 또는 iOS 17.2 이상에서 지원되는 Push-to-Start 알림을 통해 원격으로 시작되었는지를 지정합니다. 이 값을 통해 SDK은 데이터 수집 중에 로컬에서 시작된 라이브 활동과 원격으로 트리거된 라이브 활동을 구분할 수 있습니다.
예
@available(iOS 16.1, *)
struct FoodDeliveryLiveActivityAttributes: LiveActivityAttributes {
// Mandatory: AEP Integration Data
var liveActivityData: LiveActivityData
// Static Attributes: Custom properties that do not change
var restaurantName: String
// Dynamic Content State: Data that can be updated
struct ContentState: Codable, Hashable {
var orderStatus: String
}
}
@available(iOS 16.1, *)
public struct LiveActivityData: Codable {
/// Unique identifier for broadcast Live activity channels
public let channelID: String?
/// Unique identifier for individual Live activity
public let liveActivityID: String?
/// Indicates local vs remote creation
public let origin: LiveActivityOrigin?
// Initializers
public init(channelID: String) // For broadcast Live activity
public init(liveActivityID: String) // For individual Live activity
}
앱에 대해 여러 라이브 활동 유형을 등록할 수도 있습니다.
if #available(iOS 16.1, *) {
Messaging.registerLiveActivity(AirplaneTrackingAttributes.self)
Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
Messaging.registerLiveActivity(GameScoreLiveActivityAttributes.self)
}
3단계: 라이브 활동 등록 register
SDK 초기화 후 AppDelegate에 라이브 활동 유형을 등록하면 다음과 같은 작업을 수행할 수 있습니다.
- 자동 Push-to-Start 토큰 컬렉션 사용(iOS 17.2+)
- 라이브 활동 업데이트 토큰 자동 수집
- 라이프사이클 관리 및 이벤트 추적 활성화
음식 배달 라이브 활동의 예:
if #available(iOS 16.1, *) {
Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
}
4단계: 라이브 활동 위젯 만들기 widgets
라이브 활동은 위젯을 통해 표시됩니다. 위젯 번들 및 구성을 만들어야 합니다.
음식 배달 라이브 활동의 예:
@main
struct FoodDeliveryWidgetBundle: WidgetBundle {
var body: some Widget {
FoodDeliveryLiveActivityWidget()
}
}
@available(iOS 16.1, *)
struct FoodDeliveryLiveActivityWidget: Widget {
var body: some WidgetConfiguration {
ActivityConfiguration(for: FoodDeliveryLiveActivityAttributes.self) { context in
// Lock Screen UI
VStack {
Text("Order from \(context.attributes.restaurantName)")
Text("Status: \(context.state.orderStatus)") // possible status may include "Ordered", "Order accepted", "Preparing", "On the Way","Delivered"
}
} dynamicIsland: { context in
// Dynamic Island UI
DynamicIsland {
// Expanded UI
} compactLeading: {
// Compact leading UI
} compactTrailing: {
// Compact trailing UI
} minimal: {
// Minimal UI
}
}
}
}
5단계: 라이브 활동을 로컬에서 시작(선택 사항) local
Journey Optimizer은 라이브 활동을 원격으로 시작할 수 있지만 로컬로 시작할 수도 있습니다.
음식 배달 라이브 활동의 예:
let attributes = FoodDeliveryLiveActivityAttributes(
liveActivityData: LiveActivityData(liveActivityID: "order123"),
restaurantName: "Pizza Palace"
)
let contentState = FoodDeliveryLiveActivityAttributes.ContentState(
orderStatus: "Ordered"
)
let activity = try Activity<FoodDeliveryLiveActivityAttributes>.request(
attributes: attributes,
contentState: contentState,
pushType: .token
)
6단계: 디버그 지원 추가(선택 사항) debug
필요한 경우 Adobe Assurance에서 라이브 활동 스키마를 디버깅할 수 있습니다.
음식 배달 라이브 활동의 예:
@available(iOS 16.1, *)
extension FoodDeliveryLiveActivityAttributes: LiveActivityAssuranceDebuggable {
static func getDebugInfo() -> (attributes: FoodDeliveryLiveActivityAttributes, state: ContentState) {
return (
FoodDeliveryLiveActivityAttributes(
liveActivityData: LiveActivityData(liveActivityID: "debug-order-123"),
restaurantName: "Debug Restaurant"
),
ContentState(orderStatus: "Ordered")
)
}
}
추가 리소스
포괄적인 SDK 설명서 및 구현 세부 정보의 경우:
This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page explains how to integrate the Adobe Experience Platform Mobile SDK into an iOS app so it can register, display, and receive real-time Live activity updates on the Lock Screen and Dynamic Island.
Intents:
- Import the required modules AEPMessaging, AEPMessagingLiveActivity, and ActivityKit
- Define Live activity attributes conforming to
LiveActivityAttributes, includingLiveActivityDataand aContentState - Register Live activity types with
Messaging.registerLiveActivity()after SDK initialization - Create a widget configuration (
ActivityConfiguration) for both the Lock Screen and Dynamic Island - Optionally start a Live activity locally and add Assurance debug support
Glossary:
LiveActivityAttributes: The protocol a struct conforms to, defining both the static data and the dynamic content state for a Live activity (product-specific)LiveActivityData: The type of the requiredliveActivityDataproperty, which contains Adobe Experience Platform-specific data;liveActivityIDfor individual users,channelIDfor broadcast (product-specific)ContentState: Dynamic data that can be updated during the Live activity lifecycle; must conform toCodableandHashableLiveActivityOrigin: An enumeration specifying whether an activity was initiated locally or remotely via a push-to-start notification, supported in iOS 17.2 and later (product-specific)Messaging.registerLiveActivity(): The call used after SDK initialization to register Live activity types (product-specific)ActivityConfiguration: The widget configuration implemented for the Lock Screen and Dynamic Island interfaceLiveActivityAssuranceDebuggable: The protocol implemented to debug Live activity schemas in Adobe Assurance (product-specific)
Guardrails:
- iOS: 16.1 or later for basic Live activity functionality; 17.2 or later for push-to-start; 18 or later for broadcast channel support (minimum versions).
- Xcode 14.0 or later (minimum version).
- Swift 5.7 or later (minimum version).
- AEP Mobile SDK: iOS Messaging 5.11.0 or later (minimum version).
- Required dependencies: AEPCore, AEPMessaging, AEPMessagingLiveActivity, ActivityKit.
liveActivityDatais required and contains Adobe Experience Platform-specific data;ContentStatemust conform toCodableandHashable.
Terminology:
- Canonical name: Adobe Experience Platform Mobile SDK — Acronym: AEP Mobile SDK — variants: Mobile SDK
- Do not confuse: “
liveActivityID” (individual users) ≠ “channelID” (broadcast) - Do not confuse: “start a Live activity locally” (initiated within the application code) ≠ “start remotely” (initiated remotely through Journey Optimizer or via a push-to-start notification, supported in iOS 17.2 and later)
FAQ:
- Q: Which modules must I import? — AEPMessaging, AEPMessagingLiveActivity, and ActivityKit.
- Q: What is the minimum iOS version? — iOS 16.1 or later for basic functionality; iOS 17.2 or later for push-to-start; iOS 18 or later for broadcast channel support.
- Q: Which AEP Mobile SDK version is required? — iOS Messaging 5.11.0 or later.
- Q: How do I register Live activity types? — Use
Messaging.registerLiveActivity()in yourAppDelegateafter SDK initialization; you can register multiple Live activity types. - Q: Can I start a Live activity without Journey Optimizer? — Yes, a Live activity can be initiated locally within the application code (optional), in addition to being started remotely through Journey Optimizer.