实时活动与Adobe Experience Platform Mobile SDK集成 mobile-live-config-sdk

在此页面上:​将Adobe Experience Platform Mobile SDK集成到您的iOS应用程序中,以便它在锁屏界面和Dynamic Island上注册、显示和接收实时实时活动更新。

Adobe Experience Platform Mobile SDK为Apple的实时活动提供内置支持。 这样,您的应用程序就可以直接在锁屏界面和Dynamic Island上显示实时的动态更新,而无需打开应用程序。

  1. 导入所需的模块

    导入以下模块: AEPMessaging、AEPMessagingLiveActivity、ActivityKit。

  2. 定义属性

    符合LiveActivityAttributes,包括LiveActivityData和ContentState属性。

  3. 注册实时活动

    在SDK初始化后使用Messaging.registerLiveActivity()。

  4. 创建构件配置

    对Lock Screen和Dynamic Island接口实施ActivityConfiguration。

  5. 在本地启动实时活动(可选)

    可以通过Journey Optimizer远程启动实时活动,也可以在应用程序代码中本地启动实时活动。

  6. 添加调试支持(可选)

    为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文档和实施详细信息:

TIP
如果您遇到令牌注册、有效负载对齐或实时活动投放问题,请参阅实时活动故障诊断以获取详细的调试指导。
AI Knowledge Reference

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, including LiveActivityData and a ContentState
  • 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 required liveActivityData property, which contains Adobe Experience Platform-specific data; liveActivityID for individual users, channelID for broadcast (product-specific)
  • ContentState: Dynamic data that can be updated during the Live activity lifecycle; must conform to Codable and Hashable
  • LiveActivityOrigin: 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 interface
  • LiveActivityAssuranceDebuggable: 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.
  • liveActivityData is required and contains Adobe Experience Platform-specific data; ContentState must conform to Codable and Hashable.

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 your AppDelegate after 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.
recommendation-more-help
journey-optimizer-help