Decisioningでのオファーの作成と表示

Experience Platform Mobile SDKを使用して、モバイルアプリでJourney Optimizer Decisioningのオファーを表示する方法について説明します。

Journey Optimizer Decisioningは、次世代型のオファー管理であり、Decision Managementの後継です。 決定機能では、一元化された決定項目カタログと強力な決定エンジンを組み合わせることで、パーソナライズされたマーケティングオファーを提供できます。 個々のオーディエンス向けにコンテンツをカスタマイズする場合でも、AI を活用したランキングで戦略を最適化する場合でも、決定は大規模なデータ駆動型の決定を行うツールを提供します。 決定項目、ルール、ポリシーなどの主な概念を掘り下げ、これらの要素が連携してキャンペーンに最適なコンテンツを選択し、優先順位を付ける仕組みについて説明します。 コレクションとプレースメントの管理から Adobe Experience Platform データの活用まで、この包括的なガイドは、よりスマートなパーソナライゼーションを実現し、影響力のあるカスタマーエクスペリエンスを推進するのに役立ちます。

アーキテクチャ {modal="regular"}

決定は、「決定項目」と呼ばれるマーケティングオファーの一元カタログと、高度な決定エンジンを提供することで、パーソナライゼーションを簡素化します。 このエンジンは、ルールとランキング条件を活用して、各個人に最も関連性の高い決定項目を選択し、提示します。 これらの意思決定事項は、コードベースのエクスペリエンス、電子メール、SMS、プッシュ通知など、Adobe Adobe Journey Optimizerのチャネルをまたいでメッセージやエクスペリエンスにシームレスに統合されます。

このレッスンでは、コードベースのエクスペリエンスチャネルを使用して、モバイルアプリでオファーを配信することに焦点を当てます。 意思決定ソリューションのあらゆる機能を詳細に説明する必要はありません。 詳しくは、Decisioning ドキュメントを参照してください。

NOTE
このレッスンはオプションで、モバイルアプリでオファーを表示する決定機能を使用しようとしているJourney Optimizer ユーザーにのみ適用されます。

前提条件

  • SDKがインストールされ、設定されたアプリが正常に構築され、実行されました。
  • Adobe Experience Platform用アプリを設定します。
  • Journey Optimizerへのアクセス – オファーと決定を管理するための適切な権限を持つ決定

学習目標

このレッスンでは、次のことをおこないます

  • Decisioning用にEdge設定を更新します。
  • オファーを表すスキーマを作成します。
  • Assuranceで設定を検証します。
  • コードベースのエクスペリエンスチャネル設定。
  • Journey Optimizer - Decisioningのオファーに基づいて、コードベースのエクスペリエンスキャンペーンを作成します。
  • アプリにDecisioningのオファーを実装します。

セットアップ

TIP
Target🔗 レッスンでのA/B テストの一部として環境を既に設定している場合は、この設定セクションの手順の一部を既に実行している可能性があります。

データストリーム設定の更新

モバイルアプリからPlatform Edge Networkに送信されたデータがJourney Optimizer - Decisioningに確実に転送されるようにするには、データストリームを更新します。

  1. データ収集UIで、データストリーム​を選択し、データストリーム(例:Luma Mobile App)を選択します。

  2. Experience Platform​の 詳細 を選択し、コンテキストメニューから 編集 編集​を選択します。

  3. データストリーム > ​ フォルダー > Adobe Experience Platform​画面で、Offer DecisioningEdge セグメンテーション​および​ Adobe Journey Optimizer ​が有効になっていることを確認します。

    • この決定レッスンのみを行い、Decision management レッスンを行わない場合は、Offer Decisioning​を有効にする必要はありません。
    • Target レッスンを行う場合は、Personalization Destinations​も選択します。 詳しくは、Adobe Experience Platform settingsを参照してください。
  4. データストリーム設定を保存するには、「保存」を選択します。

    AEP データストリーム設定 {modal="regular"}

スキーマを定義します

  1. データ収集インターフェイスに移動し、左側のパネルから「スキーマ」を選択します。

  2. 上部バーから「参照」を選択します。

  3. パーソナライズされたオファー項目 – Experience Decisioning スキーマを開きます。 このスキーマは、オファー項目、属性、メタデータを設定するための専用のスキーマです。

  4. スキーマに、Decisioningでのオファーの使用方法を表す追加のフィールドグループを追加します。 スキーマの作成方法については、​ スキーマの作成を参照してください。 このレッスンでは、_techmarketingdemos サンドボックス設定の一部として、2つのフィールドグループ(オファー​および​オファーメタデータ)が作成されます。 スキーマの全体構造は次のとおりです。

    • image​や​ imageLowRes ​など、mediaAssets​のすべてのフィールドは​ DesignAssets ​型であり、自動的に​destinationURLedgePathrepositorysourceURLtrackedURL​および​ type ​文字列フィールドを持ちます。
    • その他のすべてのフィールドは、タイプ Object (例:offerMetadata)または​String (例:fullDescription)のいずれかです。

    ​ スキーマエクスペリエンス決定 {modal="regular"}

    パーソナライズされたオファー項目 – エクスペリエンス決定 スキーマは、任意の方法で定義できます。 上記の構造は、このレッスンの残りの部分で使用される例です。

  5. パーソナライズされたオファー項目 – Experience Decisioning スキーマに加えた変更を保存するには、保存​を選択してください。

Journey Optimizer tags拡張機能のインストール

アプリがJourney Optimizerで動作するには、タグプロパティを更新する必要があります。

  1. タグ > 拡張機能 > カタログ​に移動します。
  2. プロパティ (例:Luma Mobile App Tutorial)を開きます。
  3. カタログ​を選択します。
  4. Adobe Journey Optimizer​拡張機能を検索します。
  5. 拡張機能をインストールします。

アプリでDecisioningに基づくオファーを使用する​ only ​の場合、拡張機能のインストール​または​ 拡張機能の設定 ​では、何も設定する必要はありません。 チュートリアルの​ プッシュ通知 レッスンに既に従っている場合、開発​環境では、AJO プッシュトラッキングエクスペリエンスイベント データセット データセットが​イベントデータセット リストから選択されていることがわかります。

アプリでのJourney Optimizerの実装

前のレッスンで説明したように、モバイルタグ拡張機能をインストールすると、設定のみが提供されます。 次に、Messaging SDKをインストールして登録する必要があります。 これらの手順が明確でない場合は、SDKのインストール ​ セクションを確認してください。

NOTE
Install SDKs セクションを完了した場合、SDKは既にインストールされているため、この手順をスキップできます。
iOS
  1. Xcodeで、AEP Messagingがパッケージ依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。

  2. Xcode プロジェクトナビゲーターで​Luma > Luma > AppDelegate​に移動します。

  3. AEPMessagingがインポートのリストに含まれていることを確認してください。

    import AEPMessaging

  4. Messaging.selfが登録中の拡張機能の配列の一部であることを確認してください。

    code language-swift
    let extensions = [
        AEPIdentity.Identity.self,
        Lifecycle.self,
        Signal.self,
        Edge.self,
        AEPEdgeIdentity.Identity.self,
        Consent.self,
        UserProfile.self,
        Places.self,
        Messaging.self,
        Optimize.self,
        Assurance.self
    ]
    
Android
  1. Android Studioで、aepsdk-messaging-androidが​Android ChevronDown > Gradle Scripts​の​ build.gradle.kts ​の依存関係の一部であることを確認します。 Gradleを参照してください。

  2. Android Studio プロジェクトナビゲーターで、Android ChevronDown app > kotlin+java > com.adobe.luma.tutorial.android > LumaApplication​に移動します。

  3. com.adobe.marketing.mobile.Messagingがインポートのリストに含まれていることを確認してください。

    import import com.adobe.marketing.mobile.Messaging

  4. Messaging.EXTENSIONが登録中の拡張機能の配列の一部であることを確認してください。

    code language-kotlin
    val extensions = listOf(
        Identity.EXTENSION,
        Lifecycle.EXTENSION,
        Signal.EXTENSION,
        Edge.EXTENSION,
        Consent.EXTENSION,
        UserProfile.EXTENSION,
        Places.EXTENSION,
        Messaging.EXTENSION,
        Optimize.EXTENSION,
        Assurance.EXTENSION
    )
    

Assuranceでの設定の検証

AssuranceでDecisioningの設定を検証する必要はありません。 Decisioningでは、特定のExperience Platform Data Collection Tag拡張機能は使用されません。また、アプリ用の追加パッケージも必要ありません。 Decisioningは、アプリのMessaging拡張機能に依存しています。このチュートリアルでは、Adobe Experience Platform Mobile SDKのインストール ​および​ アプリ内メッセージの作成と送信のレッスンの一部として既に追加しておく必要があります。

コードベースのエクスペリエンスチャネル設定の作成

アプリの画面にオファーを表示するには、専用のコードベースのエクスペリエンスチャネルを設定する必要があります。 このコードベースのエクスペリエンスチャネルは、オファーを表示するアプリ内のサーフェス(場所)を定義します。

コードベースのエクスペリエンスチャネルを作成できます。

  1. Journey Optimizer UIで、左側のパネルの​ 管理 ​から ​ チャネル ​ チャネル​を選択します。

  2. 一般設定​から​ チャネル設定 ​を選択します。

  3. チャネル設定を作成」を選択します。

  4. チャネル設定の詳細​で:

    ​ チャネル設定の詳細

    1. 名前​を入力します。 例:LumaMobileAppCodeBased

    2. 説明​を入力します。 例:Code-based experience for Luma app used in Mobile SDK tutorial

    3. チャネルを選択」ドロップダウンメニューから「コードベースのエクスペリエンス」を選択します。

    4. 1つまたは複数のマーケティングアクションを選択​します。 例:オンサイト Personalization

    5. コードベースのエクスペリエンスを設定するプラットフォームを選択します。 このチュートリアルでは、iOS​または​ Android ​を選択するか、またはその両方を選択します。

      • iOS​の場合:

        1. 選択​ アプリ ID ​のEnter キーを押します。 例えば、アプリの識別子:com.adobe.luma.tutorial.swiftui
        2. アプリ内の​ 場所またはパス ​の場所を入力または選択します。 例:offersLocation
        3. プレビューURL​を入力します。 例:lumatutorialswiftui://
      • Android​の場合:

        1. 選択​ アプリ ID ​のEnter キーを押します。 例えば、アプリの識別子:com.adobe.luma.tutorial.android
        2. アプリ内の​ 場所またはパス ​の場所を入力または選択します。 例:offersLocation
        3. プレビューURL​を入力します。 例:lumatutorialandroid://default
      • コンテンツ

        • 形式​の​ JSON ​を選択します。
  5. 送信」を選択して、コードベースのエクスペリエンスを送信します。

オファーの作成

このセクションでは、決定用オファーを作成します。

  1. Journey Optimizer UIで、左側のパネルの​ Decisioning ​から DecisionItems Catalogs​を選択します。

  2. カタログ​から​ オファー ​を選択して、オファー​のリストを表示します。

  3. アイテムを作成」を選択します。

    1. オファー(決定項目)を作成する➊ 属性​手順で、次の操作を行います。

      決定 🔗 {modal="regular"}のオファーの属性

      1. 標準属性 セクションで、次の操作を行います。

        1. オファー名​を入力します。 例:Luma - Desiree Fitness Tee
        2. 開始日​を入力するか、 ​ カレンダー を使用して選択します。 例:7/1/2026, 12:00 AM
        3. 終了日​を入力するか、 ​ カレンダー を使用して終了日を選択します。 例:12/31/2026, 12:00 AM
        4. 優先度​を入力します。 例:10
        5. タグ」ドロップダウンメニューから1つ以上の適切なタグを選択します。 例:Luma - モバイルアプリ
      2. カスタム属性」セクションで、オファーコンテンツとメタデータの値を入力します。 入力できるデータとそのデータの入力方法は、オファーの​ スキーマ ​を定義した方法によって完全に決まります。 このチュートリアルでは、各オファーのタイトル、テキスト、画像を指定します。

        1. Offer コンテナの​Media Assets サブコンテナ内で、次の操作を行います。

          1. 画像」の「URLから追加」を選択し、「E​」に適切な値を入力します。ソース URL。 例:https://newluma.enablementadobe.com/images/ws05-yellow_main.jpg
          2. 画像(高解像度)」に「URLから追加」を選択し、「ソース URLを入力」に適切な値を入力します。 例:https://newluma.enablementadobe.com/images/ws05-yellow_main.jpg
        2. Offer コンテナの​Text サブコンテナ内で、次の操作を行います。

          1. 詳細な説明​の値を入力してください。 例:When you're too far to turn back, thank yourself for choosing the Desiree Fitness Tee. Its ultra-lightweight, ultra-breathable fabric wicks sweat away from your body and helps keeps you cool for the distance
          2. タイトル​の値を入力してください。 例:Desiree Fitness Tee
      3. 次へ」を選択します。

    2. オファー(決定項目)の作成の➋ 実施要件 ステップで、次の手順を実行します。

      ​ オファーアイテムの作成 – 実施要件 {modal="regular"}

      1. 実施要件​で、すべての訪問者​が選択されていることを確認します。
      2. キャッピング」セクションでキャッピングを作成する必要はありません。
      3. 次へ」を選択します。
    3. ➌ レビュー手順で、オファー(決定項目)の作成を開始します。

      ​ オファーアイテムの作成 – レビュー {modal="regular"}

      1. オファーの確認: 編集 を使用して、標準属性顧客属性​または​ プロファイル制約 ​を変更できます。
      2. 保存」を選択します。
  4. 次の追加オファーについて、手順3 (項目の作成)を繰り返します。

    table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4
    名前 タイトル 詳細な説明 画像と画像(高解像度)
    Luma - Affirm Water Bottle Affirm Water Bottle You'll stay hydrated with ease with the Affirm Water Bottle by your side or in hand. Measurements on the outside help you keep track of how much you're drinking, while the screw-top lid prevents spills. A metal carabiner clip allows you to attach it to the outside of a backpack or bag for easy access. https://newluma.enablementadobe.com/images/ug06-lb-0.jpg
    Luma - Aero Daily Fitness Tee Aero Daily Fitness Tee Need an everyday action tee that helps keep you dry? The Aero Daily Fitness Tee is made of 100% polyester wicking knit that funnels moisture away from your skin. Don't be fooled by its classic style; this tee hides premium performance technology beneath its unassuming look. https://newluma.enablementadobe.com/images/ms01-black_main.jpg
    Luma - Adrienne Trek Jacket Adrienne Trek Jacket You're ready for a cross-country jog or a coffee on the patio in the Adrienne Trek Jacket. Its style is unique with stand collar and drawstrings, and it fits like a jacket should. https://newluma.enablementadobe.com/images/wj08-gray_main.jpg
    Luma - Juno Jacket Juno Jacket On colder-than-comfortable mornings, you'll love warming up in the Juno All-Ways Performanc Jacket, designed to compete with wind and chill. Built-in Cocona™ technology aids evaporation, while a special zip placket and stand-up collar keep your neck protected. https://newluma.enablementadobe.com/images/wj06-purple_main.jpg

    開始日終了日優先度キャッピング実施要件​など、上記の表で明示的に定義されていない他のすべての値は、すべてのオファーで同じである必要があり、最初のオファーに対して定義した内容に基づいています。

次のオファーのリストが表示されます。

​ オファーリスト ​ {modal="regular"}

コレクションの作成

モバイルアプリユーザーにオファーを提示するには、作成した1つ以上のオファーで構成されるオファーコレクションを作成する必要があります。 ルールを使用して、コレクションに属するオファーを選択します。

  1. Journey Optimizer UIで、左側のパネルの​ Decisioning ​から DecisionItems Catalogs​を選択します。

  2. カタログ​から​ コレクション ​を選択すると、コレクション​のリストが表示されます。

  3. コレクションを作成」を選択します。

  4. 詳細」セクションで、次の操作を行います。

    1. コレクションの​ 名前 ​を入力します。 例:Luma - Mobile App Collection
    2. コレクションの​ 説明 ​を入力します。 例:Collection of Luma mobile app offers
  5. コレクションルール セクションの​ 個の項目数 ​の下:

    1. クリックして決定項目を作成します…

    2. 属性を選択​して、属性を選択します。

      1. 属性を選択 ダイアログで、決定属性​を選択します。 例:オファー名
      2. 保存」を選択します。
    3. 条件を選択するには、Equals ドロップダウンメニューを使用します。 例えば、​で始まります。

    4. テキストフィールドに、条件の値を入力します。 例:Luma -。 この値は、名前がLuma -で始まるすべてのオファーをコレクションの一部として選択します。 ルールを追加 AddCircle を使用すると、任意の種類のルールを作成したり、ルールを組み合わせたりできます。

  6. コレクションを作成するには、作成​を選択します。

    ​ オファー – コレクション ​ {modal="regular"}

選択戦略の作成

選択戦略は再利用可能であり、適格性制約に関連付けられたコレクションと、決定ポリシーで選択されたときに表示されるオファーを決定するランキング方法で構成されます。 決定ポリシーについては、「​ キャンペーンの作成」セクションで説明しています。

当社の実装では、選択戦略はできるだけシンプルに保たれています。

  1. Journey Optimizer UIで、左側のパネルの​ Decisioning ​から Strategy Strategy setup​を選択します。

  2. 選択戦略​を選択します。

  3. 選択戦略の作成​を選択します。 選択戦略を作成 ダイアログで、次の操作を行います。

    1. 選択戦略名​を入力します。 例:Luma - Mobile App Selection Strategy

    2. コレクションを選択​を使用して、選択戦略のコレクションを選択します。

      1. コレクション ダイアログで、コレクションを選択します。 例:Luma - Mobile App Collection
      2. 保存」を選択します。
    3. すべての訪問者​が​ 実施要件 ​に対して選択されていることを確認します。

    4. ランキング方法​に対して​ オファーの優先順位 ​が選択されていることを確認します。

  4. 作成​を選択して、選択戦略を作成します。

    選択戦略の作成

キャンペーンの作成

オファー収集とコードベースのエクスペリエンス設定チャネルの両方を使用するキャンペーンを作成します。 キャンペーンとは、特定のオーディエンスに1つ以上のチャネルをまたいでコンテンツを配信する、調整されたマーケティング活動のことです。

また、施策の一環として、意思決定ポリシーを策定します。 決定ポリシーは、各オーディエンスメンバーに配信する最適なコンテンツを動的に返すことを目的に、決定エンジンを活用するオファーのコンテナです。 目標は、各プロファイルに最適なオファーを選択することです。一方、キャンペーン/ジャーニーのオーサリングでは、メッセージに含める項目属性など、選択した決定項目の表示方法を指定できます。

  1. Journey Optimizer UIで、左側のパネルの​ ジャーニー管理 ​から Claxon Campaigns​を選択します。

  2. キャンペーンを作成」を選択します。

  3. キャンペーンを作成 ダイアログで、作成するキャンペーンのタイプとして「スケジュール済み – マーケティング」を選択します。

  4. 確認」を選択します。

  5. キャンペーン - タイムスタンプ​​画面の「プロパティ​」タブで、次の操作を行います。

    1. キャンペーンの​ 名前 ​を入力します。 例:Luma - Mobile App Offers
    2. 必要に応じて、説明​を入力します。
  6. アクション​を選択します。

    1. アクション セクションで:

      1. ​ アクションを追加 アクションを追加」を選択します。 ドロップダウンメニューから、「 ​ コード ​ コードベースのエクスペリエンス」を選択します。
      2. コードベースのエクスペリエンス」アクション設定セクションで、コードベースのエクスペリエンスチャネル設定 ドロップダウンメニューから、コードベースのエクスペリエンスチャネル設定​ LumaMobileAppCodeBased ​を選択します。
    2. 最適化言語競合管理​の他のすべての設定を変更しないでください。

  7. コンテンツ​を選択します。

    1. コードベースのエクスペリエンス​画面で、 編集 コードを編集​を選択します。

    2. コードベースのエクスペリエンス | チャネル設定:LumaMobileAppCodeBased​画面で、次の操作を行います。

      1. エディターで、次のJSONを入力します。

        code language-json
        {
           "version": "1.0",
           "offers": [
           ]
        }
        
      2. 左の2番目のパネルから DecisionItemsConfiguration Decision policy​を選択します。

        1. DecisionItemsConfiguration 決定ポリシーを追加​を選択します。

        2. 決定ポリシーの作成 ダイアログウィザードで、➊ 詳細​手順で次の操作を行います。

          1. 決定ポリシーの​ 名前 ​を入力します。 例:Luma - Mobile App Decision Policy
          2. 項目数​の2を選択または入力します。 このエントリでは、2つのオファーが確実に返されます。
          3. 次へ」を選択します。
        3. 決定ポリシーの作成 ダイアログウィザードで、➋ 戦略​手順で次の操作を行います。

          1. 戦略シーケンス​で、 AddCircle Add​を選択して、戦略シーケンスを追加します。

          2. コンテキストメニューから、選択戦略​を選択します。

            1. 選択戦略を追加 ダイアログで、以前に作成した選択戦略Luma - モバイルアプリ選択戦略​を選択します。
            2. 保存」を選択します。
          3. 次へ」を選択します。

        4. 決定ポリシーの作成 ダイアログウィザードで、➌ レビュー​手順で、決定ポリシーを確認します。

          1. 決定ポリシーを作成するには、作成​を選択します。
      3. 決定ポリシーが使用可能になったので、Luma - Mobile App Decision Policy レールを使用して、その決定ポリシーから適切な要素をJSON エディターに挿入できます。

        1. JSON エディターで、[]の間に改行を追加します。

        2. Luma - Mobile App Decision Policy レールから:

          1. エディターに決定ポリシーをJSONとして挿入するには、 Add Insert policy​を選択します。
          2. 閉じる{{/each}}の前の行にカーソルを置きます.
          3. tenant-name (例:_techmarketingdemos> オファー > テキストコンテンツ > タイトル、次に​ + ​を選択します。 これにより、オファーのタイトルがtitle要素としてJSONに追加されます。
          4. テナント名 > オファー > テキストコンテンツ > 完全な説明、次に​ + ​を選択します。 これにより、オファーの説明がtext要素としてJSONに追加されます。
          5. テナント名 > オファー > メディアアセット > 画像 > sourceURL​を選択し、+​を選択します。 これにより、オファーの高解像度画像のソース URLがimage要素としてJSONに追加されます。

          最終的なJSONは以下のようになり、決定ポリシー識別子とテナント名の値が更新されます。

          決定ポリシーの最終JSON

          { }を使用して、titletextおよびimage個のJSON要素がオブジェクトとしてラップされていることを確認します。 オブジェクトの後で,を挿入し、{{/each}}の直前に挿入します JSON内で。

      4. FileCode Validate​を使用してJSONを検証します。

      5. 保存して閉じる​を選択します。

  8. アクティブ化する​ レビュー ​を選択してください。

  9. アクティブ化するための​ レビュー(Luma - モバイルアプリオファー) ​画面には、キャンペーンの概要が表示されます。

    ​ アクティブ化のレビュー

  10. 警告やエラーが表示されない場合は、アクティブ化​を選択してキャンペーンをアクティブ化します。 確認ダイアログで、「アクティブ化」をもう一度選択します。

  11. キャンペーンのリストで、キャンペーンのステータスが StatusOrange Activating​から StatusOrange Processing StatusBlue Live​に変更されます。

これで、コードベースのエクスペリエンスキャンペーンが公開され、モバイルアプリを更新して、コードベースのエクスペリエンスキャンペーンを使用して、コードベースのエクスペリエンスチャネル設定で定義された場所またはサーフェスにオファーをレンダリングできるようになります。

アプリにオファーを実装する

前のレッスンで説明したように、モバイルタグ拡張機能をインストールすると、設定のみが提供されます。 次に、アプリにメッセージング拡張機能が設定されていることを確認する必要があります。 これらの手順が明確でない場合は、SDKのインストール ​ セクションを確認してください。

iOS
  1. Xcodeで、AEP Messagingがパッケージ依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。

  2. Xcode プロジェクトナビゲーターで​Luma > Luma > AppDelegate​に移動します。

  3. AEPMessagingがインポートのリストに含まれていることを確認してください。

    code language-swift
    import AEPMessaging
    
  4. Messaging.selfが登録中の拡張機能の配列の一部であることを確認してください。

    code language-swift
    let extensions = [
        AEPIdentity.Identity.self,
        Lifecycle.self,
        Signal.self,
        Edge.self,
        AEPEdgeIdentity.Identity.self,
        Consent.self,
        UserProfile.self,
        Places.self,
        Messaging.self,
        Optimize.self,
        Assurance.self
    ]
    
  5. Xcode プロジェクトナビゲーターの​Luma > Luma > Model > Data > general​に移動します。 showDecisioningtrueに設定され、showPersonalizationconfig セクションのfalseに設定されていることを確認します。

    code language-json
    ...
    "showPersonalisation": false,
    "showDecisioning": true,
    ...
    

    これらの設定により、アプリの「パーソナライゼーション」タブのオファーに決定機能が使用されます。

  6. Xcode プロジェクトナビゲーターの​Luma > Luma > Model > Data > general​に移動します。 コードベースのエクスペリエンスチャネル用に設定した場所またはサーフェスを特定し、surface要素を持つdecisioning セクションが設定されていることを確認します。 例:offersLocation

    code language-json
    "decisioning": {
       "surface": "offersLocation"
    },
    
  7. Xcode プロジェクトナビゲーターで​Luma > Luma > Utils > MobileSDK​に移動します。 func updatePropositionsForSurface()関数を検索します。 次のコードを追加します。

    code language-swift
    // get the propositions for the surfaces configured.
    Logger.aepMobileSDK.info("MobileSDK - updatePropositionsForSurfaces: Updating \(surfaces.count) surface(s)")
    for surface in surfaces {
       Logger.aepMobileSDK.info("MobileSDK - updatePropositionsForSurfaces: Surface URI: \(surface.uri)")
    }
    
    // Call the Messaging extension API to fetch propositions
    Messaging.updatePropositionsForSurfaces(surfaces)
    
    Logger.aepMobileSDK.info("MobileSDK - updatePropositionsForSurfaces: Update triggered successfully")
    

    この関数:

    • サーフェスの提案を取得します。

    この実装では、1つのサーフェスのみが設定され、使用されます。 複数の設定済みサーフェスを処理する場合は、コードを更新する必要があります。

  8. Xcode プロジェクトナビゲーターで、Luma > Luma > Views > Personalization > EdgeDecisioningOffersView​に移動します。 func fetchPropositions() async関数を検索し、この関数のコードを調べます。 この関数の最も重要な部分はMessaging.getPropositionsForSurfaces([surface]) { propositionsDict, error in API呼び出しです。この呼び出しは、呼び出し中に呼び出された

    • サーフェスに基づいて、現在のプロファイルの提案を取得します。
    • 提案からオファーを取得します。
    • オファーのコンテンツを(関数parseCodeBasedContentを使用して)ラップ解除して、アプリで正しく表示できるようにします。
  9. まだ​ EdgeDecisioningOffersView ​にあります。taskの方法を参照してください。 修飾子:

    1. 提案はself.updatePropositionsForSurface()を使用して更新されます。
    2. Edge ネットワークが応答し、提案をキャッシュするまでの短い待機時間が実装されます。
    3. キャッシュされた提案は、await self.fetchPropositionsを使用して取得されます。
Android
  1. Android Studioで、aepsdk-optimize-androidが​Android ChevronDown > Gradle Scripts​の​ build.gradle.kts (モジュール :app) ​の依存関係の一部であることを確認します。 Gradleを参照してください。

  2. Android Studio ナビゲーターで​Android ChevronDown > app > kotlin+java > com.adobe.luma.tutorial.android > MainActivity​に移動します。

  3. Optimizeがインポートのリストに含まれていることを確認してください。

    code language-kotlin
    import com.adobe.marketing.mobile.optimize.Optimize
    
  4. Optimize.EXTENSIONが登録中の拡張機能の配列の一部であることを確認してください。

    code language-kotlin
    val extensions = listOf(
       Identity.EXTENSION,
       Lifecycle.EXTENSION,
       Signal.EXTENSION,
       Edge.EXTENSION,
       Consent.EXTENSION,
       UserProfile.EXTENSION,
       Places.EXTENSION,
       Messaging.EXTENSION,
       Optimize.EXTENSION,
       Assurance.EXTENSION
    )
    
  5. プロジェクトナビゲーターで​Android ChevronDown > app > assets > data > general.json​に移動します。 showDecisioningtrueに設定され、showPersonalizationconfig セクションのfalseに設定されていることを確認します。

    code language-json
    ...
    "showPersonalisation": false,
    "showDecisioning": true,
    ...
    

    これらの設定により、アプリの「パーソナライゼーション」タブのオファーに決定機能が使用されます。

  6. プロジェクトナビゲーターで​Android ChevronDown > app > assets > data > general.json​に移動します。 コードベースのエクスペリエンスチャネル用に設定した場所またはサーフェスを特定し、surface要素を持つdecisioning セクションが設定されていることを確認します。 例:offersLocation

    code language-json
    "decisioning": {
       "surface": "offersLocation"
    },
    
  7. Android Studio ナビゲーターで​Android ChevronDown > app > kotlin+java > com.adobe.luma.tutorial.android > models > MobileSDK​に移動します。 suspend fun updatePropositionsForSurfaces(surfaces: List<Surface>)関数を検索します。 次のコードを追加します。

    code language-kotlin
    // get the propositions for the surfaces configured
    withContext(Dispatchers.IO) {
       Log.i("MobileSDK", "updatePropositionsForSurfaces: Updating ${surfaces.size} surface(s)")
       surfaces.forEach { surface ->
          Log.i("MobileSDK", "updatePropositionsForSurfaces: Surface URI: ${surface.uri}")
       }
    
       Messaging.updatePropositionsForSurfaces(surfaces)
       Log.i("MobileSDK", "updatePropositionsForSurfaces: Update triggered successfully")
    }
    

    この関数:

    • サーフェスの提案を取得します。

    この実装では、1つのサーフェスのみが設定され、使用されます。 複数の設定済みサーフェスを処理する場合は、コードを更新する必要があります。

  8. プロジェクトナビゲーターで​Android ChevronDown > app > kotlin+java > com.adobe.luma.tutorial.android > views > EdgeDecisioningOffersView.kt​に移動します。 suspend fun fetchPropositionsForSurface(surface: Surface): DecisioningResult = withContext(Dispatchers.IO)関数を検索し、この関数のコードを調べます。 この関数の最も重要な部分はMessaging.getPropositionsForSurfaces(listOf(surface)) { propositionsMap -> propositionsMap[surface]?.let { propositions -> API呼び出しです。この呼び出しは、呼び出し中に呼び出された

    • サーフェスに基づいて、現在のプロファイルの提案を取得します。
    • 提案からオファーを取得します。
    • オファーのコンテンツを(関数parseCodeBasedContentを使用して)ラップ解除して、アプリで正しく表示できるようにします。
  9. まだ​ EdgeDecisioningOffersView.kt ​にあります。LaunchedEffect関数の方法を確認してください。

    1. 提案はMobileSDK.shared.updatePropositionsForSurfaces(listOf(surface))を使用して更新されます。
    2. Edge ネットワークが応答して提案をキャッシュするには、簡単な遅延が実装されます。
    3. キャッシュされた提案は、fetchPropositionsForSurface(surface)を使用して取得されます。

アプリを使用して検証

iOS
  1. Play を使用して、シミュレーターまたはXcodeの物理デバイスでアプリを再構築して実行します。

  2. Personalization」タブに移動します。

  3. 一番上までスクロールすると、Surface Offers Location タイルで定義したコレクションから2つのランダムオファーが表示されます。

    {width="300"}

    すべてのオファーに同じ優先順位を付けたので、オファーはランダムです。オファーのランキングは優先順位に基づいています。

Android
  1. Play を使用して、シミュレーターまたはAndroid Studioの物理デバイスでアプリを再構築して実行します。

  2. Personalization」タブに移動します。

  3. 上にスクロールすると、Surface Offers Location タイルで定義したコレクションから、上のボックスに2つのランダム オファーが表示されます。

    {width="300"}

    すべてのオファーに同じ優先順位を付けたので、オファーはランダムです。オファーのランキングは優先順位に基づいています。

Assuranceでの実装の検証

Assuranceでオファーの実装を検証するには:

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

  2. 左側のパネルで「イベント」を選択します。

  3. イベントリストで​ メッセージ提案の応答 ​件のイベントを探します。

  4. 右側のペインで、そのようなイベントを展開します:ACPExtensionEventData > 提案 > 0 > 項目 > 0 > データ > コンテンツ > オファー。 期待するデータを含む2つのオファー​ 0 ​と​ 1 ​が表示されます。

    決定は保証を提供します

次の手順

これで、Journey Optimizer - Decisioningの実装にさらなる機能を追加するためのツールがすべて揃いました。 次に例を示します。

  • オファーに異なるパラメーターを適用します(例:優先度、キャップ)
  • アプリでプロファイル属性を収集し(​ プロファイル ​を参照)、これらのプロファイル属性を使用してオーディエンスを構築します。 そして、これらのオーディエンスを意思決定における適格性ルールの一部として使用します。
  • 複数のサーフェスを結合します。
SUCCESS
アプリがDecisioniongを使用してオファーを表示できるようにしました。
Adobe Experience Platform Mobile SDKについて学ぶために時間を割いていただきありがとうございます。 ご質問がある場合、一般的なフィードバックを共有したい場合、または今後のコンテンツに関する提案がある場合は、このExperience League コミュニティのディスカッション投稿で共有してください。

次:A/B テストを実行

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