イベントデータの追跡
モバイルアプリでイベントを追跡する方法を説明します。
Edge Network拡張機能は、エクスペリエンスイベントをPlatform Edge Networkに送信するためのAPIを提供します。 エクスペリエンスイベントは、XDM ExperienceEvent スキーマ定義に準拠するデータを含むオブジェクトです。 簡単に言えば、これらのイベントはモバイルアプリにおける顧客の行動を把握するものです。 Platform Edge Networkがデータを受信すると、そのデータは、Adobe AnalyticsやExperience Platformなどのデータストリームで設定されたアプリケーションやサービスに転送できます。 エクスペリエンスイベント の詳細については、製品ドキュメントを参照してください。
前提条件
- すべてのパッケージの依存関係は、Xcode プロジェクトで設定されます。
- AppDelegateで拡張機能を登録しました。
- 開発
appIdを使用するようにMobileCore拡張機能を設定しました。 - インポートしたSDK:
- 上記の変更でアプリを正常に構築し、実行しました。
学習目標
このレッスンでは、次のことをおこないます
- スキーマに基づいてXDM データを構造化する方法について説明します。
- 標準フィールドグループに基づいてXDM イベントを送信します。
- カスタムフィールドグループに基づいてXDM イベントを送信します。
- XDM購入イベントを送信します。
- Assuranceによる検証。
エクスペリエンスイベントの作成
Adobe Experience Platform Edge拡張機能は、事前に定義されたXDM スキーマに従うイベントをAdobe Experience Platform Edge Networkに送信できます。
プロセスはこのようになります…
-
追跡しようとしているモバイルアプリのインタラクションを特定します。
-
スキーマを確認し、適切なイベントを特定します。
-
スキーマを確認し、イベントの説明に使用する追加フィールドを特定します。
-
データオブジェクトを作成して入力します。
-
イベントの作成と送信。
-
検証。
標準フィールドグループ
標準フィールドグループの場合、プロセスは次のようになります。
-
スキーマで、収集しようとしているイベントを特定します。 この例では、コマースエクスペリエンスイベント(製品ビュー(productViews)イベントなど)を追跡しています。
{modal="regular"}
-
アプリでエクスペリエンスイベント データを含むオブジェクトを作成するには、次のようなコードを使用します。
| code language-swift |
|---|
|
このコードでは:
-
eventType:発生したイベントを記述します。可能であれば既知の値を使用してください。 -
commerce.productViews.value: イベントの数値またはブール値。 ブール値(またはAdobe Analyticsの「カウンター」)の場合、値は常に1に設定されます。 数値イベントまたは通貨イベントの場合、値は> 1にすることができます。
| code language-kotlin |
|---|
|
このコードでは:
-
eventType:発生したイベントを記述します。可能であれば既知の値を使用してください。 -
commerce.productViews.value: イベントの数値またはブール値。 ブール値(またはAdobe Analyticsの「カウンター」)の場合、値は常に1に設定されます。 数値イベントまたは通貨イベントの場合、値は> 1にすることができます。
-
スキーマで、コマース商品ビューイベントに関連する追加データを特定します。 この例では、コマース関連のイベントで使用されるフィールドの標準セットである productListItems を含めます。
{modal="regular"}
- productListItemsは配列であるため、複数の製品を指定できます。
-
このデータを追加するには、
xdmDataオブジェクトを展開して、補足データを含めます。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
- このデータ構造を使用して、
ExperienceEventを作成できるようになりました。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
sendEventAPIを使用してイベントとデータをPlatform Edge Networkに送信します。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
Edge.sendEvent APIは、MobileCore.trackActionおよびMobileCore.trackState API呼び出しに相当するAEP Mobile SDKです。 詳しくは、Analytics モバイル拡張機能からAdobe Experience Platform Edge Networkへの移行を参照してください。
次に、このコードをプロジェクトに実装します。
アプリに様々なコマース製品関連のアクションがあり、ユーザーが実行したアクションに基づいてイベントを送信する場合:
- 表示:ユーザーが特定の製品を閲覧したときに発生します。
- カートに追加する:ユーザーが商品詳細画面で
をタップすると、 - 後で保存する:ユーザーが商品詳細画面で
/ をタップすると、 - 購入:ユーザーが商品詳細画面で
をタップすると。
コマース関連のエクスペリエンスイベントの送信を再利用可能な方法で実装するには、専用の関数を使用します。
-
Xcode プロジェクトナビゲーターのLuma > Luma > Utils > MobileSDKに移動し、次を
func sendCommerceExperienceEvent(commerceEventType: String, product: Product)関数に追加します。code language-swift // Set up a data dictionary, create an experience event and send the event. let xdmData: [String: Any] = [ "eventType": "commerce." + commerceEventType, "commerce": [ commerceEventType: [ "value": 1 ] ], "productListItems": [ [ "name": product.name, "priceTotal": product.price, "SKU": product.sku ] ] ] let commerceExperienceEvent = ExperienceEvent(xdm: xdmData) Edge.sendEvent(experienceEvent: commerceExperienceEvent)この関数は、コマースエクスペリエンスのイベントタイプと商品をパラメーターとして取り出し、
- 関数のパラメーターを使用して、XDM ペイロードを辞書として設定します。
- 辞書を使用してエクスペリエンスイベントを設定します,
Edge.sendEventAPIを使用してエクスペリエンスイベントを送信します。
-
Xcode プロジェクトナビゲーターのLuma > Luma > Views > Products > ProductViewに移動し、
sendCommerceExperienceEvent関数に様々な呼び出しを追加します。-
.task修飾子のATTrackingManager.trackingAuthorizationStatusクロージャ内。 この.task修飾子は、製品ビューが初期化されて表示されるときに呼び出されるので、その特定の瞬間に製品ビューイベントを送信します。code language-swift // Send productViews commerce experience event MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "productViews", product: product) -
ツールバーの各ボタン(
、 、および )について、ATTrackingManager.trackingAuthorizationStatus == .authorizedクロージャ内に関連する呼び出しを追加します。-
の場合:code language-swift // Send saveForLater commerce experience event MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "saveForLaters", product: product) -
の場合:code language-swift // Send productListAdds commerce experience event MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "productListAdds", product: product) -
の場合:code language-swift // Send purchase commerce experience event MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "purchases", product: product)
-
-
-
Android Studio ナビゲーターでAndroid
> app > kotlin+java > com.adobe.luma.tutorial.android > models > MobileSDKに移動し、次をfunc sendCommerceExperienceEvent(commerceEventType: String, product: Product)関数に追加します。code language-kotlin // Set up a data map, create an experience event and send the event. val xdmData = mapOf( "eventType" to "commerce.$commerceEventType", "commerce" to mapOf(commerceEventType to mapOf("value" to 1)), "productListItems" to listOf( mapOf( "name" to product.name, "priceTotal" to product.price, "SKU" to product.sku ) ) ) val commerceExperienceEvent = ExperienceEvent.Builder().setXdmSchema(xdmData).build() Edge.sendEvent(commerceExperienceEvent, null)この関数は、コマースエクスペリエンスのイベントタイプと商品をパラメーターとして取り出し、
- 関数のパラメーターを使用して、XDM ペイロードをマップとして設定します。
- マップを使用してエクスペリエンスイベントを設定し,
Edge.sendEventAPIを使用してエクスペリエンスイベントを送信します。
-
Android Studio ナビゲーターでapp > kotlin+java > com.adobe.luma.tutorial.android > views > ProductView.ktに移動し、
sendCommerceExperienceEvent関数に様々な呼び出しを追加します。-
LaunchedEffect(Unit)コンポーザブル関数では、製品が表示された特定の時点で製品ビューイベントを送信する必要があります。code language-kotlin // Send productViews commerce experience event MobileSDK.shared.sendCommerceExperienceEvent("productViews", product) -
ツールバーの各ボタン(
、 、および )について、if (MobileSDK.shared.trackingEnabled == TrackingStatus.AUTHORIZED) statementのscope.launch内に関連する呼び出しを追加します。-
の場合:code language-kotlin // Send saveForLater commerce experience event MobileSDK.shared.sendCommerceExperienceEvent("saveForLaters", product) -
の場合:code language-kotlin // Send productListAdds commerce experience event MobileSDK.shared.sendCommerceExperienceEvent("productListAdds", product) -
の場合:code language-kotlin // Send purchase commerce experience event MobileSDK.shared.sendCommerceExperienceEvent("purchases", product)
-
-
java.util.Map)を基本インターフェイスとして使用してXDM ペイロードを構築します。カスタムフィールドグループ
アプリ自体の画面ビューとインタラクションを追跡するとします。 この種類のイベントのカスタムフィールドグループを定義していることを忘れないでください。
-
スキーマで、収集しようとしているイベントを特定します。
{modal="regular"}
-
オブジェクトの作成を開始します。
note NOTE -
標準フィールドグループは、常にオブジェクトルートから始まります。
-
カスタムフィールドグループは、常にExperience Cloud組織に固有のオブジェクト(
_techmarketingdemos)の下から始まります(この例では)。
-
-
アプリのインタラクションイベントの場合は、次のようなオブジェクトを作成します。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
- 画面トラッキングイベントの場合は、次のようなオブジェクトを作成します。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
- このデータ構造を使用して
ExperienceEventを作成できるようになりました。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
- イベントとデータをPlatform Edge Networkに送信します。
| code language-swift |
|---|
|
| code language-kotlin |
|---|
|
繰り返しますが、このコードをプロジェクトに実装してください。
-
便宜上、MobileSDKで2つの関数を定義します。 Xcode プロジェクトナビゲーターでLuma > Luma > Utils > MobileSDKに移動します。
-
1つはアプリのインタラクション用です。 このコードを
func sendAppInteractionEvent(actionName: String)関数に追加します。code language-swift // Set up a data dictionary, create an experience event and send the event. let xdmData: [String: Any] = [ "eventType": "application.interaction", tenant : [ "appInformation": [ "appInteraction": [ "name": actionName, "appAction": [ "value": 1 ] ] ] ] ] let appInteractionEvent = ExperienceEvent(xdm: xdmData) Edge.sendEvent(experienceEvent: appInteractionEvent)この関数は、アクション名をパラメーターとして使用し、
- 関数のパラメーターを使用して、XDM ペイロードをディクショナリとして設定します。
- 辞書を使用してエクスペリエンスイベントを設定します,
Edge.sendEventAPIを使用してエクスペリエンスイベントを送信します。
-
スクリーントラッキング用に1つ。 このコードを
func sendTrackScreenEvent(stateName: String)関数に追加します。code language-swift // Set up a data dictionary, create an experience event and send the event. let xdmData: [String: Any] = [ "eventType": "application.scene", tenant : [ "appInformation": [ "appStateDetails": [ "screenType": "App", "screenName": stateName, "screenView": [ "value": 1 ] ] ] ] ] let trackScreenEvent = ExperienceEvent(xdm: xdmData) Edge.sendEvent(experienceEvent: trackScreenEvent)この関数は、状態名をパラメーターとして使用し、
- 関数のパラメーターを使用して、XDM ペイロードをディクショナリとして設定します。
- 辞書を使用してエクスペリエンスイベントを設定します,
Edge.sendEventAPIを使用してエクスペリエンスイベントを送信します。
-
-
Luma > Luma > Views > General > LoginSheetに移動します。
-
次の強調表示されたコードをログインボタンのクロージャに追加します。
code language-swift // Send app interaction event MobileSDK.shared.sendAppInteractionEvent(actionName: "login") -
次の強調表示されたコードを
onAppear修飾子に追加します。code language-swift // Send track screen event MobileSDK.shared.sendTrackScreenEvent(stateName: "luma: content: ios: us: en: login")
-
-
便宜上、MobileSDKで2つの関数を定義します。 Android Studio ナビゲーターでAndroid
app > kotlin+java > com.adobe.luma.tutorial.android > models > MobileSDKに移動します。-
1つはアプリのインタラクション用です。 このコードを
fun sendAppInteractionEvent(actionName: String)関数に追加します。code language-kotlin // Set up a data map, create an experience event and send the event. val xdmData = mapOf( "eventType" to "application.interaction", tenant.value to mapOf( "appInformation" to mapOf( "appInteraction" to mapOf( "name" to actionName, "appAction" to mapOf("value" to 1) ) ) ) ) val appInteractionEvent = ExperienceEvent.Builder().setXdmSchema(xdmData).build() Edge.sendEvent(appInteractionEvent, null)この関数は、アクション名をパラメーターとして使用し、
- 関数のパラメーターを使用して、XDM ペイロードをマップとして設定します。
- マップを使用してエクスペリエンスイベントを設定し,
Edge.sendEventAPIを使用してエクスペリエンスイベントを送信します。
-
スクリーントラッキング用に1つ。 このコードを
fun sendTrackScreenEvent(stateName: String)関数に追加します。code language-kotlin // Set up a data map, create an experience event and send the event. val xdmData = mapOf( "eventType" to "application.scene", tenant.value to mapOf( "appInformation" to mapOf( "appStateDetails" to mapOf( "screenType" to "App", "screenName" to stateName, "screenView" to mapOf("value" to 1) ) ) ) ) val trackScreenEvent = ExperienceEvent.Builder().setXdmSchema(xdmData).build() Edge.sendEvent(trackScreenEvent, null)この関数は、状態名をパラメーターとして使用し、
- 関数のパラメーターを使用して、XDM ペイロードをマップとして設定します。
- マップを使用してエクスペリエンスイベントを設定し,
Edge.sendEventAPIを使用してエクスペリエンスイベントを送信します。
-
-
Android
app>kotlin+java>com.adobe.luma.tutorial.android> ビュー> LoginSheet.kt に移動します-
次の強調表示されたコードをButton onClick イベントに追加します。
code language-kotlin // Send app interaction event MobileSDK.shared.sendAppInteractionEvent("login") -
次の強調表示されたコードを
LaunchedEffect(Unit)コンポーザブル関数に追加します。code language-kotlin // Send track screen event MobileSDK.shared.sendTrackScreenEvent("luma: content: android: us: en: login")
-
検証
-
設定の手順 セクションを確認して、シミュレーターまたはデバイスをAssuranceに接続します。
- Assurance アイコンを左に動かします。
- タブバーで Home を選択し、ホーム画面にECID、電子メール、および CRM ID が表示されていることを確認します。
- タブバーで「Products」を選択します。
- 製品を選ぶ。
-
(iOS)または (Android)を選択します。 -
を選択します。 -
を選択します。
-
Assurance UIで、com.adobe.edge.konductor ベンダーのhitReceived イベントを探します。
-
イベントを選択し、messages オブジェクト内のXDM データを確認します。 または、
Copy Raw Eventを使用して、環境設定のテキストエディターまたはコードエディターを使用して、イベントを貼り付けて検査することもできます。
{modal="regular"}
次の手順
これで、アプリにデータ収集を追加するためのツールがすべて揃いました。 アプリ内でユーザーが製品とインタラクションする方法にインテリジェンスを追加し、アプリにアプリのインタラクションとスクリーントラッキングの呼び出しを追加できます。
- 注文、チェックアウト、空の買い物かごなどの機能をアプリに実装し、この機能に関連するコマースエクスペリエンスイベントを追加します。
- 適切なパラメーターを使用して
sendAppInteractionEventへの呼び出しを繰り返し、ユーザーによる他のアプリのインタラクションを追跡します。 - アプリでユーザーが表示した画面を追跡するために、適切なパラメーターを使用して
sendTrackScreenEventへの呼び出しを繰り返します。
AnalyticsとPlatformへのイベントの送信
イベントを収集してPlatform Edge Networkに送信したら、イベントは データストリーム で設定されたアプリケーションとサービスに送信されます。 後のレッスンでは、このデータをAdobe Analytics、Adobe Experience Platform、およびその他のAdobe Experience Cloud ソリューション(Adobe TargetやAdobe Journey Optimizerなど)にマッピングします。