イベントデータの追跡

モバイルアプリでイベントを追跡する方法を説明します。

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に送信できます。

プロセスはこのようになります…

  1. 追跡しようとしているモバイルアプリのインタラクションを特定します。

  2. スキーマを確認し、適切なイベントを特定します。

  3. スキーマを確認し、イベントの説明に使用する追加フィールドを特定します。

  4. データオブジェクトを作成して入力します。

  5. イベントの作成と送信。

  6. 検証。

標準フィールドグループ

標準フィールドグループの場合、プロセスは次のようになります。

  • スキーマで、収集しようとしているイベントを特定します。 この例では、コマースエクスペリエンスイベント(製品ビュー(productViews)イベントなど)を追跡しています。

    製品ビュースキーマ ​ {modal="regular"}

  • アプリでエクスペリエンスイベント データを含むオブジェクトを作成するには、次のようなコードを使用します。

iOS
code language-swift
var xdmData: [String: Any] = [
    "eventType": "commerce.productViews",
    "commerce": [
        "productViews": [
        "value": 1
        ]
    ]
]

このコードでは:

  • eventType:発生したイベントを記述します。可能であれば既知の値を使用してください。

  • commerce.productViews.value: イベントの数値またはブール値。 ブール値(またはAdobe Analyticsの「カウンター」)の場合、値は常に1に設定されます。 数値イベントまたは通貨イベントの場合、値は> 1にすることができます。

Android
code language-kotlin
val xdmData = mapOf(
    "eventType" to "commerce.productViews",
    "commerce" to mapOf(
        "productViews" to mapOf(
        "value": 1
        )
    )
)

このコードでは:

  • eventType:発生したイベントを記述します。可能であれば既知の値を使用してください。

  • commerce.productViews.value: イベントの数値またはブール値。 ブール値(またはAdobe Analyticsの「カウンター」)の場合、値は常に1に設定されます。 数値イベントまたは通貨イベントの場合、値は> 1にすることができます。

  • スキーマで、コマース商品ビューイベントに関連する追加データを特定します。 この例では、コマース関連のイベントで使用されるフィールドの標準セットである​ productListItems ​を含めます。

    製品リスト項目スキーマ ​ {modal="regular"}

    • productListItems​は配列であるため、複数の製品を指定できます。
  • このデータを追加するには、xdmData オブジェクトを展開して、補足データを含めます。

iOS
code language-swift
var xdmData: [String: Any] = [
    "eventType": "commerce.productViews",
    "commerce": [
        "productViews": [
            "value": 1
        ]
    ],
    "productListItems": [
        [
            "name":  productName,
            "SKU": sku,
            "priceTotal": priceString,
            "quantity": 1
        ]
    ]
]
Android
code language-kotlin
val xdmData = mapOf(
    "eventType" to "commerce.productViews",
    "commerce" to mapOf(
        "productViews" to mapOf(
        "value": 1
        )
    ),
    "productListItems" to mapOf(
        "name": productName,
        "SKU": sku,
        "priceTotal", priceString,
        "quantity", 1
    )
)
  • このデータ構造を使用して、ExperienceEventを作成できるようになりました。
iOS
code language-swift
let productViewEvent = ExperienceEvent(xdm: xdmData)
Android
code language-kotlin
val productViewEvent = ExperienceEvent.Builder().setXdmSchema(xdmData).build()
  • sendEvent APIを使用してイベントとデータをPlatform Edge Networkに送信します。
iOS
code language-swift
Edge.sendEvent(experienceEvent: productViewEvent)
Android
code language-kotlin
Edge.sendEvent(productViewEvent, null)

Edge.sendEvent APIは、MobileCore.trackActionおよびMobileCore.trackState API呼び出しに相当するAEP Mobile SDKです。 詳しくは、Analytics モバイル拡張機能からAdobe Experience Platform Edge Networkへの移行を参照してください。

次に、このコードをプロジェクトに実装します。
アプリに様々なコマース製品関連のアクションがあり、ユーザーが実行したアクションに基づいてイベントを送信する場合:

  • 表示:ユーザーが特定の製品を閲覧したときに発生します。
  • カートに追加する:ユーザーが商品詳細画面で ShoppingCart をタップすると、
  • 後で保存する:ユーザーが商品詳細画面で Heart / ThumbUp をタップすると、
  • 購入:ユーザーが商品詳細画面で CreditCard をタップすると。

コマース関連のエクスペリエンスイベントの送信を再利用可能な方法で実装するには、専用の関数を使用します。

iOS
  1. 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.sendEvent APIを使用してエクスペリエンスイベントを送信します。
  2. Xcode プロジェクトナビゲーターの​Luma > Luma > Views > Products > ProductView​に移動し、sendCommerceExperienceEvent関数に様々な呼び出しを追加します。

    1. .task修飾子のATTrackingManager.trackingAuthorizationStatus クロージャ内。 この.task修飾子は、製品ビューが初期化されて表示されるときに呼び出されるので、その特定の瞬間に製品ビューイベントを送信します。

      code language-swift
      // Send productViews commerce experience event
      MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "productViews", product: product)
      
    2. ツールバーの各ボタン( Heart 、 ShoppingCart 、および CreditCard )について、ATTrackingManager.trackingAuthorizationStatus == .authorized クロージャ内に関連する呼び出しを追加します。

      1. Heart の場合:

        code language-swift
        // Send saveForLater commerce experience event
        MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "saveForLaters", product: product)
        
      2. ​ ショッピングカート ​ の場合:

        code language-swift
        // Send productListAdds commerce experience event
        MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "productListAdds", product: product)
        
      3. ​ クレジットカード ​ の場合:

        code language-swift
        // Send purchase commerce experience event
        MobileSDK.shared.sendCommerceExperienceEvent(commerceEventType: "purchases", product: product)
        
Android
  1. Android Studio ナビゲーターで​Android ChevronDown > 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.sendEvent APIを使用してエクスペリエンスイベントを送信します。
  2. Android Studio ナビゲーターで​app > kotlin+java > com.adobe.luma.tutorial.android > views > ProductView.kt​に移動し、sendCommerceExperienceEvent関数に様々な呼び出しを追加します。

    1. LaunchedEffect(Unit) コンポーザブル関数では、製品が表示された特定の時点で製品ビューイベントを送信する必要があります。

      code language-kotlin
      // Send productViews commerce experience event
      MobileSDK.shared.sendCommerceExperienceEvent("productViews", product)
      
    2. ツールバーの各ボタン( ThumbUp 、 ShoppingCart 、および CreditCard )について、if (MobileSDK.shared.trackingEnabled == TrackingStatus.AUTHORIZED) statementのscope.launch内に関連する呼び出しを追加します。

      1. ThumbUp の場合:

        code language-kotlin
        // Send saveForLater commerce experience event
        MobileSDK.shared.sendCommerceExperienceEvent("saveForLaters", product)
        
      2. ​ ショッピングカート ​ の場合:

        code language-kotlin
        // Send productListAdds commerce experience event
        MobileSDK.shared.sendCommerceExperienceEvent("productListAdds", product)
        
      3. ​ クレジットカード ​ の場合:

        code language-kotlin
        // Send purchase commerce experience event
        MobileSDK.shared.sendCommerceExperienceEvent("purchases", product)
        
TIP
Android™用に開発する場合は、Map (java.util.Map)を基本インターフェイスとして使用してXDM ペイロードを構築します。

カスタムフィールドグループ

アプリ自体の画面ビューとインタラクションを追跡するとします。 この種類のイベントのカスタムフィールドグループを定義していることを忘れないでください。

  • スキーマで、収集しようとしているイベントを特定します。
    ​ アプリ操作スキーマ ​ {modal="regular"}

  • オブジェクトの作成を開始します。

    note
    NOTE
    • 標準フィールドグループは、常にオブジェクトルートから始まります。

    • カスタムフィールドグループは、常にExperience Cloud組織に固有のオブジェクト(_techmarketingdemos)の下から始まります(この例では)。

  • アプリのインタラクションイベントの場合は、次のようなオブジェクトを作成します。

iOS
code language-swift
let xdmData: [String: Any] = [
    "eventType": "application.interaction",
    "_techmarketingdemos": [
    "appInformation": [
        "appInteraction": [
            "name": "login",
            "appAction": [
                "value": 1
                ]
            ]
        ]
    ]
]
Android
code language-kotlin
val xdmData = mapOf(
    "eventType" to "application.interaction",
    "_techmarketingdemos" to mapOf(
        "appInformation" to mapOf(
            "appInteraction" to mapOf(
                "name" to "login",
                "appAction" to mapOf("value" to 1)
            )
        )
    )
)
  • 画面トラッキングイベントの場合は、次のようなオブジェクトを作成します。
iOS
code language-swift
var xdmData: [String: Any] = [
    "eventType": "application.scene",
    "_techmarketingdemos": [
        "appInformation": [
            "appStateDetails": [
                "screenType": "App",
                "screenName": "luma: content: ios: us: en: login",
                "screenView": [
                    "value": 1
                ]
            ]
        ]
    ]
]
Android
code language-kotlin
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)
            )
        )
    )
)
  • このデータ構造を使用してExperienceEventを作成できるようになりました。
iOS
code language-swift
let event = ExperienceEvent(xdm: xdmData)
Android
code language-kotlin
val event = ExperienceEvent(xdmData)
  • イベントとデータをPlatform Edge Networkに送信します。
iOS
code language-swift
Edge.sendEvent(experienceEvent: event)
Android
code language-kotlin
Edge.sendEvent(event, null)

繰り返しますが、このコードをプロジェクトに実装してください。

iOS
  1. 便宜上、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.sendEvent APIを使用してエクスペリエンスイベントを送信します。
    • スクリーントラッキング用に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.sendEvent APIを使用してエクスペリエンスイベントを送信します。
  2. Luma > Luma > Views > General > LoginSheet​に移動します。

    1. 次の強調表示されたコードをログインボタンのクロージャに追加します。

      code language-swift
      // Send app interaction event
      MobileSDK.shared.sendAppInteractionEvent(actionName: "login")
      
    2. 次の強調表示されたコードをonAppear修飾子に追加します。

      code language-swift
      // Send track screen event
      MobileSDK.shared.sendTrackScreenEvent(stateName: "luma: content: ios: us: en: login")
      
Android
  1. 便宜上、MobileSDK​で2つの関数を定義します。 Android Studio ナビゲーターで​Android ChevronDown 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.sendEvent APIを使用してエクスペリエンスイベントを送信します。
    • スクリーントラッキング用に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.sendEvent APIを使用してエクスペリエンスイベントを送信します。
  2. Android ChevronDown ​ app>kotlin+java>com.adobe.luma.tutorial.android>​ ビュー​>​ LoginSheet.kt ​​に移動します

    1. 次の強調表示されたコードを​Button onClick イベントに追加します。

      code language-kotlin
      // Send app interaction event
      MobileSDK.shared.sendAppInteractionEvent("login")
      
    2. 次の強調表示されたコードをLaunchedEffect(Unit) コンポーザブル関数に追加します。

      code language-kotlin
      // Send track screen event
      MobileSDK.shared.sendTrackScreenEvent("luma: content: android: us: en: login")
      

検証

  1. 設定の手順 セクションを確認して、シミュレーターまたはデバイスをAssuranceに接続します。

    1. Assurance アイコンを左に動かします。
    2. タブバーで​ Home ​を選択し、ホーム画面に​ECID、電子メール、および​ CRM ID ​が表示されていることを確認します。
    3. タブバーで「Products」を選択します。
    4. 製品を選ぶ。
    5. Heart (iOS)または ThumbUp (Android)を選択します。
    6. ShoppingCartAdd を選択します。
    7. CreditCard を選択します。
iOS
{width="300"}
Android
{width="278"}
  1. Assurance UIで、com.adobe.edge.konductor ベンダーの​hitReceived イベントを探します。

  2. イベントを選択し、messages オブジェクト内のXDM データを確認します。 または、 Copy Copy Raw Event​を使用して、環境設定のテキストエディターまたはコードエディターを使用して、イベントを貼り付けて検査することもできます。

    ​ データ収集の検証 {modal="regular"}

次の手順

これで、アプリにデータ収集を追加するためのツールがすべて揃いました。 アプリ内でユーザーが製品とインタラクションする方法にインテリジェンスを追加し、アプリにアプリのインタラクションとスクリーントラッキングの呼び出しを追加できます。

  • 注文、チェックアウト、空の買い物かごなどの機能をアプリに実装し、この機能に関連するコマースエクスペリエンスイベントを追加します。
  • 適切なパラメーターを使用してsendAppInteractionEventへの呼び出しを繰り返し、ユーザーによる他のアプリのインタラクションを追跡します。
  • アプリでユーザーが表示した画面を追跡するために、適切なパラメーターを使用してsendTrackScreenEventへの呼び出しを繰り返します。
TIP
詳細な例については、完成したアプリ ​を確認してください。

AnalyticsとPlatformへのイベントの送信

イベントを収集してPlatform Edge Networkに送信したら、イベントは​ データストリーム ​で設定されたアプリケーションとサービスに送信されます。 後のレッスンでは、このデータをAdobe Analytics、Adobe Experience Platform、およびその他のAdobe Experience Cloud ソリューション(Adobe TargetやAdobe Journey Optimizerなど)にマッピングします。

SUCCESS
これで、Adobe Experience Platform Edge Networkに対するコマース、アプリのインタラクション、画面追跡イベントをトラッキングするようにアプリを設定しました。 データストリームで定義したすべてのサービスに自動的に配信されます。
Adobe Experience Platform Mobile SDKについて学ぶために時間を割いていただきありがとうございます。 ご質問がある場合、一般的なフィードバックを共有したい場合、または今後のコンテンツに関する提案がある場合は、このExperience League コミュニティのディスカッション投稿で共有してください。

次:WebViewsの処理

recommendation-more-help
platform-learn-help-tutorial-mobile-sdk