Adobe Experience Platform Mobile SDKとライブアクティビティの統合 mobile-live-config-sdk
Adobe Experience Platform Mobile SDKは、Appleのライブアクティビティに対する組み込みのサポートを提供します。 これにより、アプリを開かなくても、ロック画面と Dynamic Island でリアルタイムの動的な更新を直接表示できます。
-
AEPMessaging、AEPMessagingLiveActivity、ActivityKit のモジュールを読み込みます。
-
LiveActivityAttributesに準拠し、LiveActivityData属性とContentState属性を含めます。 -
SDK の初期化後に
Messaging.registerLiveActivity()を使用します。 -
ロック画面と Dynamic Island インターフェイスの両方に
ActivityConfigurationを実装します。 -
ライブアクティビティは、Journey Optimizerからリモートで開始することも、アプリケーションコード内でローカルに開始することもできます。
-
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のドキュメントと実装の詳細については、以下を参照してください。