Decisioningでのオファーの作成と表示
Experience Platform Mobile SDKを使用して、モバイルアプリでJourney Optimizer Decisioningのオファーを表示する方法について説明します。
Journey Optimizer Decisioningは、次世代型のオファー管理であり、Decision Managementの後継です。 決定機能では、一元化された決定項目カタログと強力な決定エンジンを組み合わせることで、パーソナライズされたマーケティングオファーを提供できます。 個々のオーディエンス向けにコンテンツをカスタマイズする場合でも、AI を活用したランキングで戦略を最適化する場合でも、決定は大規模なデータ駆動型の決定を行うツールを提供します。 決定項目、ルール、ポリシーなどの主な概念を掘り下げ、これらの要素が連携してキャンペーンに最適なコンテンツを選択し、優先順位を付ける仕組みについて説明します。 コレクションとプレースメントの管理から Adobe Experience Platform データの活用まで、この包括的なガイドは、よりスマートなパーソナライゼーションを実現し、影響力のあるカスタマーエクスペリエンスを推進するのに役立ちます。
決定は、「決定項目」と呼ばれるマーケティングオファーの一元カタログと、高度な決定エンジンを提供することで、パーソナライゼーションを簡素化します。 このエンジンは、ルールとランキング条件を活用して、各個人に最も関連性の高い決定項目を選択し、提示します。 これらの意思決定事項は、コードベースのエクスペリエンス、電子メール、SMS、プッシュ通知など、Adobe Adobe Journey Optimizerのチャネルをまたいでメッセージやエクスペリエンスにシームレスに統合されます。
このレッスンでは、コードベースのエクスペリエンスチャネルを使用して、モバイルアプリでオファーを配信することに焦点を当てます。 意思決定ソリューションのあらゆる機能を詳細に説明する必要はありません。 詳しくは、Decisioning ドキュメントを参照してください。
前提条件
- SDKがインストールされ、設定されたアプリが正常に構築され、実行されました。
- Adobe Experience Platform用アプリを設定します。
- Journey Optimizerへのアクセス – オファーと決定を管理するための適切な権限を持つ決定。
学習目標
このレッスンでは、次のことをおこないます
- Decisioning用にEdge設定を更新します。
- オファーを表すスキーマを作成します。
- Assuranceで設定を検証します。
- コードベースのエクスペリエンスチャネル設定。
- Journey Optimizer - Decisioningのオファーに基づいて、コードベースのエクスペリエンスキャンペーンを作成します。
- アプリにDecisioningのオファーを実装します。
セットアップ
データストリーム設定の更新
モバイルアプリからPlatform Edge Networkに送信されたデータがJourney Optimizer - Decisioningに確実に転送されるようにするには、データストリームを更新します。
-
データ収集UIで、データストリームを選択し、データストリーム(例:Luma Mobile App)を選択します。
-
Experience Platformの
を選択し、コンテキストメニューから 編集を選択します。 -
データストリーム >
> Adobe Experience Platform画面で、Offer Decisioning、Edge セグメンテーションおよび Adobe Journey Optimizer が有効になっていることを確認します。- この決定レッスンのみを行い、Decision management レッスンを行わない場合は、Offer Decisioningを有効にする必要はありません。
- Target レッスンを行う場合は、Personalization Destinationsも選択します。 詳しくは、Adobe Experience Platform settingsを参照してください。
-
データストリーム設定を保存するには、「保存」を選択します。
{modal="regular"}
スキーマを定義します
-
データ収集インターフェイスに移動し、左側のパネルから「スキーマ」を選択します。
-
上部バーから「参照」を選択します。
-
パーソナライズされたオファー項目 – Experience Decisioning スキーマを開きます。 このスキーマは、オファー項目、属性、メタデータを設定するための専用のスキーマです。
-
スキーマに、Decisioningでのオファーの使用方法を表す追加のフィールドグループを追加します。 スキーマの作成方法については、 スキーマの作成を参照してください。 このレッスンでは、_techmarketingdemos サンドボックス設定の一部として、2つのフィールドグループ(オファーおよびオファーメタデータ)が作成されます。 スキーマの全体構造は次のとおりです。
- imageや imageLowRes など、mediaAssetsのすべてのフィールドは DesignAssets 型であり、自動的にdestinationURL、edgePath、repository、sourceURL、trackedURLおよび type 文字列フィールドを持ちます。
- その他のすべてのフィールドは、タイプ Object (例:offerMetadata)またはString (例:fullDescription)のいずれかです。
{modal="regular"}
パーソナライズされたオファー項目 – エクスペリエンス決定 スキーマは、任意の方法で定義できます。 上記の構造は、このレッスンの残りの部分で使用される例です。
-
パーソナライズされたオファー項目 – Experience Decisioning スキーマに加えた変更を保存するには、保存を選択してください。
Journey Optimizer tags拡張機能のインストール
アプリがJourney Optimizerで動作するには、タグプロパティを更新する必要があります。
- タグ > 拡張機能 > カタログに移動します。
- プロパティ (例:Luma Mobile App Tutorial)を開きます。
- カタログを選択します。
- Adobe Journey Optimizer拡張機能を検索します。
- 拡張機能をインストールします。
アプリでDecisioningに基づくオファーを使用する only の場合、拡張機能のインストールまたは 拡張機能の設定 では、何も設定する必要はありません。 チュートリアルの プッシュ通知 レッスンに既に従っている場合、開発環境では、AJO プッシュトラッキングエクスペリエンスイベント データセット データセットがイベントデータセット リストから選択されていることがわかります。
アプリでのJourney Optimizerの実装
前のレッスンで説明したように、モバイルタグ拡張機能をインストールすると、設定のみが提供されます。 次に、Messaging SDKをインストールして登録する必要があります。 これらの手順が明確でない場合は、SDKのインストール セクションを確認してください。
-
Xcodeで、AEP Messagingがパッケージ依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。
-
Xcode プロジェクトナビゲーターでLuma > Luma > AppDelegateに移動します。
-
AEPMessagingがインポートのリストに含まれていることを確認してください。import AEPMessaging -
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 Studioで、aepsdk-messaging-androidがAndroid
> Gradle Scriptsの build.gradle.kts の依存関係の一部であることを確認します。 Gradleを参照してください。 -
Android Studio プロジェクトナビゲーターで、Android
app > kotlin+java > com.adobe.luma.tutorial.android > LumaApplicationに移動します。 -
com.adobe.marketing.mobile.Messagingがインポートのリストに含まれていることを確認してください。import import com.adobe.marketing.mobile.Messaging -
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のインストール および アプリ内メッセージの作成と送信のレッスンの一部として既に追加しておく必要があります。
コードベースのエクスペリエンスチャネル設定の作成
アプリの画面にオファーを表示するには、専用のコードベースのエクスペリエンスチャネルを設定する必要があります。 このコードベースのエクスペリエンスチャネルは、オファーを表示するアプリ内のサーフェス(場所)を定義します。
コードベースのエクスペリエンスチャネルを作成できます。
-
Journey Optimizer UIで、左側のパネルの 管理 から
チャネルを選択します。 -
一般設定から チャネル設定 を選択します。
-
「チャネル設定を作成」を選択します。
-
チャネル設定の詳細で:
-
名前を入力します。 例:
LumaMobileAppCodeBased。 -
説明を入力します。 例:
Code-based experience for Luma app used in Mobile SDK tutorial。 -
「チャネルを選択」ドロップダウンメニューから「コードベースのエクスペリエンス」を選択します。
-
1つまたは複数のマーケティングアクションを選択します。 例:オンサイト Personalization。
-
コードベースのエクスペリエンスを設定するプラットフォームを選択します。 このチュートリアルでは、iOSまたは Android を選択するか、またはその両方を選択します。
-
iOSの場合:
- 選択 アプリ ID のEnter キーを押します。 例えば、アプリの識別子:
com.adobe.luma.tutorial.swiftui。 - アプリ内の 場所またはパス の場所を入力または選択します。 例:
offersLocation。 - プレビューURLを入力します。 例:
lumatutorialswiftui://。
- 選択 アプリ ID のEnter キーを押します。 例えば、アプリの識別子:
-
Androidの場合:
- 選択 アプリ ID のEnter キーを押します。 例えば、アプリの識別子:
com.adobe.luma.tutorial.android。 - アプリ内の 場所またはパス の場所を入力または選択します。 例:
offersLocation。 - プレビューURLを入力します。 例:
lumatutorialandroid://default。
- 選択 アプリ ID のEnter キーを押します。 例えば、アプリの識別子:
-
コンテンツ
- 形式の JSON を選択します。
-
-
-
「送信」を選択して、コードベースのエクスペリエンスを送信します。
オファーの作成
このセクションでは、決定用オファーを作成します。
-
Journey Optimizer UIで、左側のパネルの Decisioning から
Catalogsを選択します。 -
カタログから オファー を選択して、オファーのリストを表示します。
-
「アイテムを作成」を選択します。
-
オファー(決定項目)を作成する➊ 属性手順で、次の操作を行います。
決定
{modal="regular"}のオファーの属性
-
標準属性 セクションで、次の操作を行います。
- オファー名を入力します。 例:
Luma - Desiree Fitness Tee。 - 開始日を入力するか、
を使用して選択します。 例:7/1/2026, 12:00 AM。 - 終了日を入力するか、
を使用して終了日を選択します。 例:12/31/2026, 12:00 AM。 - 優先度を入力します。 例:
10。 - 「タグ」ドロップダウンメニューから1つ以上の適切なタグを選択します。 例:Luma - モバイルアプリ。
- オファー名を入力します。 例:
-
「カスタム属性」セクションで、オファーコンテンツとメタデータの値を入力します。 入力できるデータとそのデータの入力方法は、オファーの スキーマ を定義した方法によって完全に決まります。 このチュートリアルでは、各オファーのタイトル、テキスト、画像を指定します。
-
Offer コンテナのMedia Assets サブコンテナ内で、次の操作を行います。
- 「画像」の「URLから追加」を選択し、「E」に適切な値を入力します。ソース URL。 例:
https://newluma.enablementadobe.com/images/ws05-yellow_main.jpg。 - 「画像(高解像度)」に「URLから追加」を選択し、「ソース URLを入力」に適切な値を入力します。 例:
https://newluma.enablementadobe.com/images/ws05-yellow_main.jpg。
- 「画像」の「URLから追加」を選択し、「E」に適切な値を入力します。ソース URL。 例:
-
Offer コンテナのText サブコンテナ内で、次の操作を行います。
- 詳細な説明の値を入力してください。 例:
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。 - タイトルの値を入力してください。 例:
Desiree Fitness Tee。
- 詳細な説明の値を入力してください。 例:
-
-
「次へ」を選択します。
-
-
オファー(決定項目)の作成の➋ 実施要件 ステップで、次の手順を実行します。
{modal="regular"}
- 実施要件で、すべての訪問者が選択されていることを確認します。
- 「キャッピング」セクションでキャッピングを作成する必要はありません。
- 「次へ」を選択します。
-
➌ レビュー手順で、オファー(決定項目)の作成を開始します。
{modal="regular"}
- オファーの確認:
を使用して、標準属性、顧客属性または プロファイル制約 を変更できます。 - 「保存」を選択します。
- オファーの確認:
-
-
次の追加オファーについて、手順3 (項目の作成)を繰り返します。
table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4 名前 タイトル 詳細な説明 画像と画像(高解像度) Luma - Affirm Water BottleAffirm Water BottleYou'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.jpgLuma - Aero Daily Fitness TeeAero Daily Fitness TeeNeed 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.jpgLuma - Adrienne Trek JacketAdrienne Trek JacketYou'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.jpgLuma - Juno JacketJuno JacketOn 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開始日、終了日、優先度、キャッピング、実施要件など、上記の表で明示的に定義されていない他のすべての値は、すべてのオファーで同じである必要があり、最初のオファーに対して定義した内容に基づいています。
次のオファーのリストが表示されます。
コレクションの作成
モバイルアプリユーザーにオファーを提示するには、作成した1つ以上のオファーで構成されるオファーコレクションを作成する必要があります。 ルールを使用して、コレクションに属するオファーを選択します。
-
Journey Optimizer UIで、左側のパネルの Decisioning から
Catalogsを選択します。 -
カタログから コレクション を選択すると、コレクションのリストが表示されます。
-
「コレクションを作成」を選択します。
-
「詳細」セクションで、次の操作を行います。
- コレクションの 名前 を入力します。 例:
Luma - Mobile App Collection。 - コレクションの 説明 を入力します。 例:
Collection of Luma mobile app offers。
- コレクションの 名前 を入力します。 例:
-
コレクションルール セクションの 個の項目数 の下:
-
クリックして決定項目を作成します…
-
属性を選択して、属性を選択します。
- 属性を選択 ダイアログで、決定属性を選択します。 例:オファー名。
- 「保存」を選択します。
-
条件を選択するには、Equals ドロップダウンメニューを使用します。 例えば、はで始まります。
-
テキストフィールドに、条件の値を入力します。 例:
Luma -。 この値は、名前がLuma -で始まるすべてのオファーをコレクションの一部として選択します。 ルールを追加 を使用すると、任意の種類のルールを作成したり、ルールを組み合わせたりできます。
-
-
コレクションを作成するには、作成を選択します。
{modal="regular"}
選択戦略の作成
選択戦略は再利用可能であり、適格性制約に関連付けられたコレクションと、決定ポリシーで選択されたときに表示されるオファーを決定するランキング方法で構成されます。 決定ポリシーについては、「 キャンペーンの作成」セクションで説明しています。
当社の実装では、選択戦略はできるだけシンプルに保たれています。
-
Journey Optimizer UIで、左側のパネルの Decisioning から
Strategy setupを選択します。 -
選択戦略を選択します。
-
選択戦略の作成を選択します。 選択戦略を作成 ダイアログで、次の操作を行います。
-
選択戦略名を入力します。 例:
Luma - Mobile App Selection Strategy。 -
コレクションを選択を使用して、選択戦略のコレクションを選択します。
- コレクション ダイアログで、コレクションを選択します。 例:Luma - Mobile App Collection。
- 「保存」を選択します。
-
すべての訪問者が 実施要件 に対して選択されていることを確認します。
-
ランキング方法に対して オファーの優先順位 が選択されていることを確認します。
-
-
作成を選択して、選択戦略を作成します。
キャンペーンの作成
オファー収集とコードベースのエクスペリエンス設定チャネルの両方を使用するキャンペーンを作成します。 キャンペーンとは、特定のオーディエンスに1つ以上のチャネルをまたいでコンテンツを配信する、調整されたマーケティング活動のことです。
また、施策の一環として、意思決定ポリシーを策定します。 決定ポリシーは、各オーディエンスメンバーに配信する最適なコンテンツを動的に返すことを目的に、決定エンジンを活用するオファーのコンテナです。 目標は、各プロファイルに最適なオファーを選択することです。一方、キャンペーン/ジャーニーのオーサリングでは、メッセージに含める項目属性など、選択した決定項目の表示方法を指定できます。
-
Journey Optimizer UIで、左側のパネルの ジャーニー管理 から
Campaignsを選択します。 -
「キャンペーンを作成」を選択します。
-
キャンペーンを作成 ダイアログで、作成するキャンペーンのタイプとして「スケジュール済み – マーケティング」を選択します。
-
「確認」を選択します。
-
キャンペーン - タイムスタンプ画面の「プロパティ」タブで、次の操作を行います。
- キャンペーンの 名前 を入力します。 例:
Luma - Mobile App Offers。 - 必要に応じて、説明を入力します。
- キャンペーンの 名前 を入力します。 例:
-
アクションを選択します。
-
アクション セクションで:
- 「
アクションを追加」を選択します。 ドロップダウンメニューから、「 コードベースのエクスペリエンス」を選択します。 - 「コードベースのエクスペリエンス」アクション設定セクションで、コードベースのエクスペリエンスチャネル設定 ドロップダウンメニューから、コードベースのエクスペリエンスチャネル設定 LumaMobileAppCodeBased を選択します。
- 「
-
最適化、言語、競合管理の他のすべての設定を変更しないでください。
-
-
コンテンツを選択します。
-
コードベースのエクスペリエンス画面で、
コードを編集を選択します。 -
コードベースのエクスペリエンス | チャネル設定:LumaMobileAppCodeBased画面で、次の操作を行います。
-
エディターで、次のJSONを入力します。
code language-json { "version": "1.0", "offers": [ ] } -
左の2番目のパネルから
Decision policyを選択します。-
決定ポリシーを追加を選択します。 -
決定ポリシーの作成 ダイアログウィザードで、➊ 詳細手順で次の操作を行います。
- 決定ポリシーの 名前 を入力します。 例:
Luma - Mobile App Decision Policy。 - 項目数の
2を選択または入力します。 このエントリでは、2つのオファーが確実に返されます。 - 「次へ」を選択します。
- 決定ポリシーの 名前 を入力します。 例:
-
決定ポリシーの作成 ダイアログウィザードで、➋ 戦略手順で次の操作を行います。
-
戦略シーケンスで、
Addを選択して、戦略シーケンスを追加します。 -
コンテキストメニューから、選択戦略を選択します。
- 選択戦略を追加 ダイアログで、以前に作成した選択戦略、Luma - モバイルアプリ選択戦略を選択します。
- 「保存」を選択します。
-
「次へ」を選択します。
-
-
決定ポリシーの作成 ダイアログウィザードで、➌ レビュー手順で、決定ポリシーを確認します。
- 決定ポリシーを作成するには、作成を選択します。
-
-
決定ポリシーが使用可能になったので、Luma - Mobile App Decision Policy レールを使用して、その決定ポリシーから適切な要素をJSON エディターに挿入できます。
-
JSON エディターで、
[と]の間に改行を追加します。 -
Luma - Mobile App Decision Policy レールから:
- エディターに決定ポリシーをJSONとして挿入するには、
Insert policyを選択します。 - 閉じる
{{/each}}の前の行にカーソルを置きます. - tenant-name (例:_techmarketingdemos) > オファー > テキストコンテンツ > タイトル、次に + を選択します。 これにより、オファーのタイトルが
title要素としてJSONに追加されます。 - テナント名 > オファー > テキストコンテンツ > 完全な説明、次に + を選択します。 これにより、オファーの説明が
text要素としてJSONに追加されます。 - テナント名 > オファー > メディアアセット > 画像 > sourceURLを選択し、+を選択します。 これにより、オファーの高解像度画像のソース URLが
image要素としてJSONに追加されます。
最終的なJSONは以下のようになり、決定ポリシー識別子とテナント名の値が更新されます。
{ }を使用して、title、textおよびimage個のJSON要素がオブジェクトとしてラップされていることを確認します。 オブジェクトの後で,を挿入し、{{/each}}の直前に挿入しますJSON内で。 - エディターに決定ポリシーをJSONとして挿入するには、
-
-
Validateを使用してJSONを検証します。 -
保存して閉じるを選択します。
-
-
-
アクティブ化する レビュー を選択してください。
-
アクティブ化するための レビュー(Luma - モバイルアプリオファー) 画面には、キャンペーンの概要が表示されます。
-
警告やエラーが表示されない場合は、アクティブ化を選択してキャンペーンをアクティブ化します。 確認ダイアログで、「アクティブ化」をもう一度選択します。
-
キャンペーンのリストで、キャンペーンのステータスが
Activatingから Processing ~ Liveに変更されます。
これで、コードベースのエクスペリエンスキャンペーンが公開され、モバイルアプリを更新して、コードベースのエクスペリエンスキャンペーンを使用して、コードベースのエクスペリエンスチャネル設定で定義された場所またはサーフェスにオファーをレンダリングできるようになります。
アプリにオファーを実装する
前のレッスンで説明したように、モバイルタグ拡張機能をインストールすると、設定のみが提供されます。 次に、アプリにメッセージング拡張機能が設定されていることを確認する必要があります。 これらの手順が明確でない場合は、SDKのインストール セクションを確認してください。
-
Xcodeで、AEP Messagingがパッケージ依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。
-
Xcode プロジェクトナビゲーターでLuma > Luma > AppDelegateに移動します。
-
AEPMessagingがインポートのリストに含まれていることを確認してください。code language-swift import AEPMessaging -
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 ] -
Xcode プロジェクトナビゲーターのLuma > Luma > Model > Data > generalに移動します。
showDecisioningがtrueに設定され、showPersonalizationがconfigセクションのfalseに設定されていることを確認します。code language-json ... "showPersonalisation": false, "showDecisioning": true, ...これらの設定により、アプリの「パーソナライゼーション」タブのオファーに決定機能が使用されます。
-
Xcode プロジェクトナビゲーターのLuma > Luma > Model > Data > generalに移動します。 コードベースのエクスペリエンスチャネル用に設定した場所またはサーフェスを特定し、
surface要素を持つdecisioningセクションが設定されていることを確認します。 例:offersLocation。code language-json "decisioning": { "surface": "offersLocation" }, -
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つのサーフェスのみが設定され、使用されます。 複数の設定済みサーフェスを処理する場合は、コードを更新する必要があります。
-
Xcode プロジェクトナビゲーターで、Luma > Luma > Views > Personalization > EdgeDecisioningOffersViewに移動します。
func fetchPropositions() async関数を検索し、この関数のコードを調べます。 この関数の最も重要な部分はMessaging.getPropositionsForSurfaces([surface]) { propositionsDict, error inAPI呼び出しです。この呼び出しは、呼び出し中に呼び出された- サーフェスに基づいて、現在のプロファイルの提案を取得します。
- 提案からオファーを取得します。
- オファーのコンテンツを(関数
parseCodeBasedContentを使用して)ラップ解除して、アプリで正しく表示できるようにします。
-
まだ EdgeDecisioningOffersView にあります。
taskの方法を参照してください。 修飾子:- 提案は
self.updatePropositionsForSurface()を使用して更新されます。 - Edge ネットワークが応答し、提案をキャッシュするまでの短い待機時間が実装されます。
- キャッシュされた提案は、
await self.fetchPropositionsを使用して取得されます。
- 提案は
-
Android Studioで、aepsdk-optimize-androidがAndroid
> Gradle Scriptsの build.gradle.kts (モジュール :app) の依存関係の一部であることを確認します。 Gradleを参照してください。 -
Android Studio ナビゲーターでAndroid
> app > kotlin+java > com.adobe.luma.tutorial.android > MainActivityに移動します。 -
Optimizeがインポートのリストに含まれていることを確認してください。code language-kotlin import com.adobe.marketing.mobile.optimize.Optimize -
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 ) -
プロジェクトナビゲーターでAndroid
> app > assets > data > general.jsonに移動します。showDecisioningがtrueに設定され、showPersonalizationがconfigセクションのfalseに設定されていることを確認します。code language-json ... "showPersonalisation": false, "showDecisioning": true, ...これらの設定により、アプリの「パーソナライゼーション」タブのオファーに決定機能が使用されます。
-
プロジェクトナビゲーターでAndroid
> app > assets > data > general.jsonに移動します。 コードベースのエクスペリエンスチャネル用に設定した場所またはサーフェスを特定し、surface要素を持つdecisioningセクションが設定されていることを確認します。 例:offersLocation。code language-json "decisioning": { "surface": "offersLocation" }, -
Android Studio ナビゲーターでAndroid
> 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つのサーフェスのみが設定され、使用されます。 複数の設定済みサーフェスを処理する場合は、コードを更新する必要があります。
-
プロジェクトナビゲーターでAndroid
> 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を使用して)ラップ解除して、アプリで正しく表示できるようにします。
-
まだ EdgeDecisioningOffersView.kt にあります。
LaunchedEffect関数の方法を確認してください。- 提案は
MobileSDK.shared.updatePropositionsForSurfaces(listOf(surface))を使用して更新されます。 - Edge ネットワークが応答して提案をキャッシュするには、簡単な遅延が実装されます。
- キャッシュされた提案は、
fetchPropositionsForSurface(surface)を使用して取得されます。
- 提案は
アプリを使用して検証
-
を使用して、シミュレーターまたはXcodeの物理デバイスでアプリを再構築して実行します。 -
「Personalization」タブに移動します。
-
一番上までスクロールすると、Surface Offers Location タイルで定義したコレクションから2つのランダムオファーが表示されます。
{width="300"}
すべてのオファーに同じ優先順位を付けたので、オファーはランダムです。オファーのランキングは優先順位に基づいています。
-
を使用して、シミュレーターまたはAndroid Studioの物理デバイスでアプリを再構築して実行します。 -
「Personalization」タブに移動します。
-
上にスクロールすると、Surface Offers Location タイルで定義したコレクションから、上のボックスに2つのランダム オファーが表示されます。
{width="300"}
すべてのオファーに同じ優先順位を付けたので、オファーはランダムです。オファーのランキングは優先順位に基づいています。
Assuranceでの実装の検証
Assuranceでオファーの実装を検証するには:
-
シミュレーターまたはデバイスをAssuranceに接続するには、設定の手順 セクションを確認してください。
-
左側のパネルで「イベント」を選択します。
-
イベントリストで メッセージ提案の応答 件のイベントを探します。
-
右側のペインで、そのようなイベントを展開します:ACPExtensionEventData > 提案 > 0 > 項目 > 0 > データ > コンテンツ > オファー。 期待するデータを含む2つのオファー 0 と 1 が表示されます。
次の手順
これで、Journey Optimizer - Decisioningの実装にさらなる機能を追加するためのツールがすべて揃いました。 次に例を示します。
- オファーに異なるパラメーターを適用します(例:優先度、キャップ)
- アプリでプロファイル属性を収集し( プロファイル を参照)、これらのプロファイル属性を使用してオーディエンスを構築します。 そして、これらのオーディエンスを意思決定における適格性ルールの一部として使用します。
- 複数のサーフェスを結合します。