場所を使用
アプリでPlaces位置情報サービスを使用する方法を説明します。
Adobe Experience Platform Data Collection Places Serviceは、位置情報サービスであり、位置情報を認識したモバイルアプリが位置情報のコンテキストを把握できるようにします。 このサービスでは、使いやすい豊富なSDKインターフェイスと、柔軟性の高いPOI (Point of Interest)データベースを利用できます。
前提条件
- すべてのパッケージの依存関係は、Xcode プロジェクト内に配置されます。
- AppDelegateに登録済みの拡張機能。
- 開発appIdを使用するようにMobileCoreを設定しました。
- インポートしたSDK:
- 上記の変更でアプリを正常に構築し、実行しました。
学習目標
このレッスンでは、次のことをおこないます
- Places サービスでPOIを定義する方法について説明します。
- Places拡張機能を使用してタグプロパティを更新します。
- 位置情報イベントを取得するためにスキーマを更新します。
- Assuranceで設定を検証します。
- Places拡張機能を登録するには、アプリを更新します。
- アプリのPlaces サービスから位置情報トラッキングを実装します。
セットアップ
Places サービスがアプリ内およびモバイル SDK内で機能するには、設定を行う必要があります。
場所を定義
Places サービスでは、いくつかの位置情報を定義します。
- データ収集UIで、Placesを選択します。
-
を選択します。
- コンテキストメニューから、ライブラリの管理を選択します。
{modal="regular"}
- ライブラリの管理 ダイアログで、新規を選択します。
- ライブラリを作成 ダイアログで、名前を入力します(例:
Luma)。 - 「確認」を選択します。
{modal="regular"}
- ライブラリの管理 ダイアログを閉じるには、閉じるを選択します。
- POI Managementに戻り、POIsの読み込みを選択します。
- 場所の読み込み ダイアログで「開始」を選択します。
- ライブラリのリストから Luma を選択します。
- 「次へ」を選択します。
{modal="regular"}
- Luma POIs ZIP ファイル をダウンロードし、コンピューター上の場所に抽出します。
- 場所を読み込み ダイアログで、抽出した
luma_pois.csvファイルを CSV ファイルを選択 – ファイルをドラッグ&ドロップ します。 検証の成功 - が表示され、CSV ファイルが正常に検証されました。 - 「インポートを開始」を選択します。 成功 - 新しいPOIが6つ追加されました。
- 完了を選択します。
- POI Managementでは、新しい6つのLuma ストアがリストに追加されます。 リスト
とマップビュー
{modal="regular"}。
Places拡張機能のインストール
-
Tagsに移動し、モバイル タグ プロパティを見つけて、プロパティを開きます。
-
拡張機能を選択します。
-
カタログを選択します。
-
Places拡張機能を検索します。
-
拡張機能をインストールします。
-
拡張機能のインストール ダイアログで、次の操作を行います。
- 「ライブラリを選択」リストから「Luma」を選択します。
- 作業ライブラリが選択されていることを確認します(例:初期ビルド)。
- 「ライブラリに保存」を選択し、 ライブラリに保存 から をビルドします。
{modal="regular"}。
-
ライブラリが再構築されます。
スキーマの検証
スキーマの作成で定義されているスキーマに、POIと位置情報データを収集するために必要なフィールドグループとクラスが組み込まれているかどうかを確認します。
- データ収集インターフェイスに移動し、左側のパネルから「スキーマ」を選択します。
- 上部バーから「参照」を選択します。
- スキーマを選択して開きます。
- スキーマエディターで、コンシューマーエクスペリエンスイベントを選択します。
- オブジェクトとフィールドを持つplaceContext オブジェクトが表示され、POIのインタラクションと位置情報データを取得できます。
{modal="regular"}
タグプロパティを更新する
Places拡張機能には、位置情報イベントを監視する機能が用意されており、これらのイベントに基づいてアクションをトリガーできます。 この機能を使用すると、アプリに実装する必要があるAPI コーディングを最小限に抑えることができます。
データ要素
まず、いくつかのデータ要素を作成します。
-
データ収集UIでタグプロパティに移動します。
-
左側のパネルから「データ要素」を選択します。
-
「データ要素を追加」を選択します。
-
データ要素を作成画面で、名前(例:
Name - Entered)を入力します。 -
拡張機能 リストから 場所 を選択します。
-
データ要素タイプ リストから 名前 を選択します。
-
TARGETの下の 現在のPOI を選択します。
-
「ライブラリに保存」を選択します。
{modal="regular"}
-
以下の表の情報を使用して、手順4~8を繰り返し、追加のデータ要素を作成します。
table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4 5-row-4 名前 拡張機能 データ要素タイプ ターゲット Name - ExitedPlaces 名前 前回離脱したPOI Category - CurrentPlaces カテゴリ 現在の POI Category - ExitedPlaces カテゴリ 前回離脱したPOI City - CurrentPlaces 市区町村 現在の POI City - ExitedPlaces 市区町村 前回離脱したPOI 次のデータ要素のリストが必要です。
{modal="regular"}
ルール
次に、これらのデータ要素を操作するルールを定義します。
-
タグプロパティで、左側のパネルから「ルール」を選択します。
-
「ルールを追加」を選択します。
-
ルールを作成画面で、ルールの名前(例:
POI - Entry)を入力します。 -
「イベント」の下の「
」を選択します。
- 拡張機能 リストから Places を選択し、イベントタイプ リストから Enter POI を選択します。
- 「変更を保持」を選択します。
。
-
「アクション」の下の「
」を選択します。
-
「拡張機能」リストから「モバイルコア」を選択し、リスト「アクションタイプ」から「データを添付」を選択します。 このアクションは、ペイロードデータを添付します。
-
JSON ペイロードに、次のペイロードを貼り付けます。
code language-json { "xdm": { "eventType": "location.entry", "placeContext": { "geo": { "city": "{%%City - Current%%}" }, "POIinteraction": { "poiDetail": { "name": "{%%Name - Current%%}", "category": "{%%Category - Current%%}" }, "poiEntries": { "value": 1 } } } } }を選択して、
{%% ... %%}個のデータ要素プレースホルダー値をJSONに挿入することもできます。 ポップアップダイアログでは、作成した任意のデータ要素を選択できます。 -
「変更を保持」を選択します。
{modal="regular"}
-
-
「モバイルコア – データを添付」アクションの横にある「
」を選択します。
- 拡張機能 リストから Adobe Experience Platform Edge Network を選択し、Edge Networkにイベントを転送します。 このアクションにより、イベントとその他のペイロードデータがPlatform Edge Networkに確実に転送されます。
- 「変更を保持」を選択します。
-
ルールを保存するには、ライブラリに保存を選択します。
{modal="regular"}
別のルールを作成してみましょう
-
ルールを作成画面で、ルールの名前(例:
POI - Exit)を入力します。 -
「イベント」の下の「
」を選択します。
- 拡張機能 リストから 場所 を選択し、イベントタイプ リストから POI を終了します。
- 「変更を保持」を選択します。
-
「アクション」の下の「
」を選択します。
-
「拡張機能」リストから「モバイルコア」を選択し、「アクションタイプ」リストから「データを添付」を選択します。
-
JSON ペイロードに、次のペイロードを貼り付けます。
code language-json { "xdm": { "eventType": "location.exit", "placeContext": { "geo": { "city": "{%%City - Exited%%}" }, "POIinteraction": { "poiExits": { "value": 1 }, "poiDetail": { "name": "{%%Name - Exited%%}", "category": "{%%Category - Exited%%}" } } } } } -
「変更を保持」を選択します。
-
-
「モバイルコア – データを添付」アクションの横にある「
」を選択します。
- 拡張機能 リストから Adobe Experience Platform Edge Network を選択し、Edge Networkにイベントを転送します。
- 「変更を保持」を選択します。
-
ルールを保存するには、ライブラリに保存を選択します。
{modal="regular"}
タグのすべての変更が公開されるようにするには
- ビルドするライブラリとして Initial Build を選択します。
- ビルドを選択します。
{modal="regular"}
Assuranceでの設定の検証
Assuranceで設定を検証するには:
-
Assurance UIに移動します。
-
左側のパネルで利用できない場合は、左側のパネルで「設定」を選択し、イベントの横の「
」を選択し、PLACES サービスの下の「マップとシミュレート」を選択します。
-
「保存」を選択します。
-
左側のパネルで「マップとシミュレート」を選択します。
-
マップをPOIの1つの場所に移動します。
-
を選択してPOIの読み込みをシミュレーションします。 POIは円とピンで識別されます。
-
POIの選択。
-
ポップアップから、
エントリイベントをシミュレートを選択します。
{modal="regular"}
-
左側のパネルから「イベント」を選択すると、シミュレートしたイベントが表示されます。
{modal="regular"}
アプリにPlacesを実装する
前のレッスンで説明したように、モバイルタグ拡張機能をインストールすると、設定のみが提供されます。 次に、Places SDKをインストールして登録する必要があります。 これらの手順が明確でない場合は、SDKのインストール セクションを確認してください。
-
Xcodeで、AEP Placesがパッケージ依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。
-
Xcode プロジェクトナビゲーターでLuma > Luma > AppDelegateに移動します。
-
AEPPlacesがインポートのリストに含まれていることを確認してください。code language-swift import AEPPlaces -
Places.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 > Utils > MobileSDKに移動して、
func processRegionEvent(regionEvent: PlacesRegionEvent, forRegion region: CLRegion) async関数を見つけます。 次のコードを追加します。code language-swift // Process geolocation event Places.processRegionEvent(regionEvent, forRegion: region)この
Places.processRegionEventAPIは、位置情報をPlaces サービスに通信します。 -
XcodeのプロジェクトナビゲーターでLuma > Luma > Views > Location > GeofenceSheetに移動します。
-
「エントリ」ボタンに、次のコードを入力します。
code language-swift // Simulate geofence entry event Task { await MobileSDK.shared.processRegionEvent(regionEvent: .entry, forRegion: region) } -
「終了」ボタンに、次のコードを入力します。
code language-swift // Simulate geofence exit event Task { await MobileSDK.shared.processRegionEvent(regionEvent: .exit, forRegion: region) }
-
-
Android Studioで、aepsdk-places-androidがAndroid
Gradle Scriptsの build.gradle.kts (モジュール :app) の依存関係の一部であることを確認します。 Gradleを参照してください。 -
Android Studio プロジェクトナビゲーターで、Android
> app > kotlin+java > com.adobe.luma.tutorial.android > LumaApplicationに移動します。 -
com.adobe.marketing.mobile.Messagingがインポートのリストに含まれていることを確認してください。import import com.adobe.marketing.mobile.Places -
Places.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 Studio プロジェクトナビゲーターで、Android
> app > kotlin+java > com.adobe.luma.tutorial.android > models > MobileSDKに移動します。suspend fun processGeofence(geofence: Geofence?, transitionType: Int)関数を検索します。 次のコードを追加します。code language-kotlin // Process geolocation event Places.processGeofence(geofence, transitionType)この
Places.processRegionEventAPIは、位置情報をPlaces サービスに通信します。 -
Android Studio プロジェクトナビゲーターで、Android
> app > kotlin+java > com.adobe.luma.tutorial.android > views > LocationView.kに移動します。-
「エントリ」ボタンに、次のコードを入力します。
code language-kotlin // Simulate geofence entry event coroutineScope.launch { MobileSDK.shared.processGeofence( region, Geofence.GEOFENCE_TRANSITION_ENTER ) } -
「終了」ボタンに、次のコードを入力します。
code language-kotlin // Simulate geofence entry event coroutineScope.launch { MobileSDK.shared.processGeofence( region, Geofence.GEOFENCE_TRANSITION_EXIT ) }
-
アプリを使用して検証
アプリの位置情報の機能を検証するには:
-
デバイスまたはシミュレーターでアプリを開きます。
-
「場所」タブに移動します。
-
マップを移動(ドラッグ)して、青い中央の円がPOIの1つ(例:ロンドン)の上にあることを確認します。
-
タップ
{width="20"}が表示されるまで、カテゴリと名前が赤い場所のラベルにピンで表示されます。
-
POIのラベルをタップすると、近くのPOI シートが開きます。
{width="300"}
-
EntryまたはExit ボタンを押して、アプリからジオフェンスのエントリとジオフェンスの終了イベントをシミュレートします。
{width="300"}
-
Assurance UIにイベントが表示されます。 Places サービスイベントの両方で使用できます。
-
「場所」タブに移動します。
-
ジオフェンスを使用またはシミュレートを選択します。
-
表示される赤い丸の中のどこかをタップします。
{width="300"}
-
EntryまたはExit ボタンを押して、アプリからジオフェンスのエントリとジオフェンスの終了イベントをシミュレートします。
{width="300"}
-
Assurance UIにイベントが表示されます。
次の手順
これで、アプリの位置情報に新しい機能を追加するためのツールがすべて揃いました。 イベントをEdge Networkに転送した後、Experience Platform用にアプリを設定すると、アプリで使用されているプロファイルにエクスペリエンスイベントが表示されます。
このチュートリアルの「Journey Optimizer」セクションでは、エクスペリエンスイベントを使用してジャーニーをトリガーできることがわかります(「 プッシュ通知」および「 アプリ内メッセージ 」と「Journey Optimizer」を参照)。 例えば、実店舗のジオフェンスに入った際に、プッシュ通知を製品プロモーションと共にアプリのユーザーに送信する通常の例です。
このアプリの位置情報機能の実装は、コードを最小限に抑えています。 タグプロパティで定義したPlaces サービス、データ要素およびルールは、ほとんどの機能を提供します。 または、入力されたplaceContext オブジェクトを含むXDM ペイロードを使用して、Edge.sendEvent API ( イベント を参照)を使用して、アプリに同じ機能を直接実装することもできます。