Adobe Experience Platform Mobile SDK とのライブアクティビティ統合 mobile-live-config-sdk

このページ: Adobe Experience Platform Mobile SDK を iOS アプリに統合して、ロック画面と Dinamic island でライブアクティビティの更新をリアルタイムで登録、表示、受信できるようにします。

Adobe Experience Platform Mobile SDK は、Apple のライブアクティビティのビルトインのサポートを提供します。 これにより、アプリを開かなくても、ロック画面と Dynamic Island でリアルタイムの動的な更新を直接表示できます。

  1. 必要なモジュールをインポート

    AEPMessaging、AEPMessagingLiveActivity、ActivityKit のモジュールを読み込みます。

  2. 属性の定義

    LiveActivityAttributes に準拠し、LiveActivityData 属性と ContentState 属性を含めます。

  3. ライブアクティビティを登録

    SDK の初期化後に Messaging.registerLiveActivity() を使用します。

  4. ウィジェット設定を作成

    ロック画面と Dynamic Island インターフェイスの両方に ActivityConfiguration を実装します。

  5. ローカルでライブアクティビティを開始(オプション)

    ライブアクティビティは、Journey Optimizer を通じてリモートで開始するか、アプリケーションコード内でローカルで開始することができます。

  6. デバッグサポートを追加(オプション)

    Assuranceに LiveActivityAssuranceDebuggable を実装します。

正しい設定と互換性を確保するために、次の最小バージョンがインストールされていることを確認します。

前提条件:

  • iOS:

    • iOS 16.1 以降:基本的なライブアクティビティ機能
    • iOS 17.2 以降:プッシュトゥスタートのサポート
    • 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 以降でサポートされているプッシュトゥスタート通知を通じてリモートで開始されたかを指定します。 この値により、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 でライブアクティビティスキーマをデバッグできます。

食品配送ライブアクティビティの例:

@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: A required property containing 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, messaging SDK
  • Synonyms: “push-to-start” = “remotely triggered start, supported in iOS 17.2 and later”
  • Do not confuse: “liveActivityID” (individual users) ≠ “channelID” (broadcast)
  • Do not confuse: “start a Live activity locally” (initiated within the application code) ≠ “start remotely via push-to-start” (triggered remotely through Journey Optimizer)

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