在此页面上:将Adobe Experience Platform Mobile SDK集成到您的iOS应用程序中,以便它在锁屏界面和Dynamic Island上注册、显示和接收实时实时活动更新。
Adobe Experience Platform Mobile SDK为Apple的实时活动提供内置支持。 这样,您的应用程序就可以直接在锁屏界面和Dynamic Island上显示实时的动态更新,而无需打开应用程序。
-
导入以下模块: AEPMessaging、AEPMessagingLiveActivity、ActivityKit。
-
符合
LiveActivityAttributes,包括LiveActivityData和ContentState属性。 -
在SDK初始化后使用
Messaging.registerLiveActivity()。 -
对Lock Screen和Dynamic Island接口实施
ActivityConfiguration。 -
可以通过Journey Optimizer远程启动实时活动,也可以在应用程序代码中本地启动实时活动。
-
为Assurance实施
LiveActivityAssuranceDebuggable。
验证是否安装了以下最低版本,以确保配置和兼容性正确。
先决条件:
-
iOS:
- iOS16.1或更高版本:基本实时活动功能
- iOS 17.2+:即按即用支持
- iOS 18+:广播频道支持
-
Xcode: 14.0或更高版本
-
Swift: 5.7或更高版本
-
依赖项: AEPCore、AEPMessaging、AEPMessagingLiveActivity、ActivityKit
-
AEP Mobile SDK版本: iOS消息5.11.0或更高版本
步骤1:导入所需的模块 import
若要开始,您首先需要导入以下模块: AEPMessaging、AEPMessagingLiveActivity、ActivityKit。
import AEPMessaging
import AEPMessagingLiveActivity
import ActivityKit
第2步:定义您的实时活动属性 attributes
创建符合LiveActivityAttributes协议的结构。 这会定义实时活动的静态数据和动态内容状态。
关键组件包括:
-
liveActivityData(必需),其中包含特定于Adobe Experience Platform的数据。- 对于个人用户:使用
LiveActivityData(liveActivityID: "unique-id") - 用于广播:使用
LiveActivityData(channelID: "channel-id")
- 对于个人用户:使用
-
静态属性,特定于您的用例的自定义属性,如
restaurantName。 -
ContentState定义可在实时活动生命周期中更新的动态数据。 它必须符合Codable和Hashable。 -
LiveActivityOrigin枚举指定活动是在应用程序内本地启动,还是通过iOS 17.2及更高版本中支持的即点即用通知远程启动。 此值允许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中注册您的实时活动类型,这允许您:
- 启用自动推送启动令牌收集(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中调试Live活动架构:
食品配送实时活动示例:
@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.