使用地标
了解如何在应用程序中使用Places地理位置服务。
Adobe Experience Platform数据收集位置服务是一种地理位置服务,它使具有位置感知的移动应用程序能够了解位置上下文。 该服务使用丰富且易于使用的SDK界面,并随附了灵活的兴趣点(POI)数据库。
先决条件
- 所有包依赖项都已放置在Xcode项目中。
- 在AppDelegate中注册的扩展。
- 已将MobileCore配置为使用开发appId。
- 导入的SDK。
- 通过上述更改成功构建并运行应用程序。
学习目标
在本课程中,您将执行以下操作
- 了解如何在Places服务中定义目标点。
- 使用Places扩展更新您的标记属性。
- 更新您的架构以捕获地理位置事件。
- 验证Assurance中的设置。
- 更新您的应用程序以注册Places扩展。
- 从应用程序中的Places服务实施地理位置跟踪。
设置
要使Places服务在您的应用程序内但在Mobile SDK中正常工作,您必须进行一些设置。
定义地标
您可以在Places服务中定义一些目标点。
-
在数据收集UI中,选择 地标。
-
选择
-
从上下文菜单中选择 管理库。
-
在 管理库 对话框中,选择 新建。
-
在 创建库 对话框中,输入 名称,例如
Luma
。 -
选择 确认。
-
要关闭 管理库 对话框,请选择 关闭。
-
返回 POI管理,选择 导入POI。
-
在 导入地标 对话框中选择 开始。
-
从库列表中选择 Luma,
-
选择 下一步。
-
下载Luma POI ZIP文件并将其解压缩到计算机上的某个位置。
-
在 导入地标 对话框中,将提取的
luma_pois.csv
文件拖放到 选择CSV文件 — 拖放您的文件。 您应会看到 验证成功 - 已成功验证CSV文件。 -
选择 开始导入。 您应该看到 成功 - 已成功添加6个新POI。
-
选择 完成。
-
在 POI管理 中,您应该会看到六个新的Luma商店已添加到列表中。 您可以在
。
Install Places扩展
-
导航到 标记,找到您的移动标记属性并打开该属性。
-
选择 扩展。
-
选择 目录。
-
搜索 Places 扩展。
-
安装扩展。
-
在 安装扩展 对话框中:
-
从 Luma 选择库 列表中选择。
-
请确保已选择您的工作库,例如 初始内部版本。
-
从 保存到库 中选择 保存到库并生成。
。
-
-
已重建您的库。
验证您的架构
验证您的架构(如创建架构中所定义)是否合并了必要的字段组和类以收集POI和地理位置数据。
-
导航到数据收集界面,然后从左边栏中选择 架构。
-
从顶部栏中选择 浏览。
-
选择您的架构以将其打开。
-
在架构编辑器中,选择 使用者体验事件。
-
您看到 placeContext 对象,其中包含用于捕获POI交互和地理位置数据的对象和字段。
。
更新您的标记属性
适用于标记的Places扩展提供了用于监视地理位置事件的功能,并允许您根据这些事件触发操作。 您可以使用此功能最大程度地减少必须在应用程序中实施的API编码。
数据元素
首先创建多个数据元素。
-
转到数据收集UI中的标记属性。
-
从左边栏中选择 数据元素。
-
选择 添加数据元素。
-
在 创建数据元素 屏幕中,输入名称,例如
Name - Entered
。 -
从 扩展 列表中选择 地标。
-
从 数据元素类型 列表中选择 名称。
-
选择 TARGET 下的 当前POI。
-
选择 保存到库。
-
使用下表中的信息重复步骤4 - 8以创建其他数据元素。
table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4 5-row-4 名称 扩展 数据元素类型 TARGET Name - Exited
Places 名称 上次退出的POI Category - Current
Places 类别 当前POI Category - Exited
Places 类别 上次退出的POI City - Current
Places 城市 当前POI City - Exited
Places 城市 上次退出的POI 您应该拥有以下数据元素列表。
规则
接下来,您将定义用于这些数据元素的规则。
-
在标记属性中,从左边栏选择 规则。
-
选择 添加规则。
-
在 创建规则 屏幕中,输入规则的名称,例如
POI - Entry
。 -
选择
- 从 扩展 列表中选择 地标,并从 事件类型 列表中选择 输入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 } } } } }
您还可以通过选择
{%% ... %%}
数据 -
选择 保留更改。
-
-
选择
- 从 扩展 列表中选择 Adobe Experience Platform Edge Network,然后选择 将事件转发到Edge Network。 此操作确保将事件和其他有效负载数据转发到Platform Edge Network。
- 选择 保留更改。
-
要保存规则,请选择 保存到库。
让我们再创建一个规则
-
在 创建规则 屏幕中,输入规则的名称,例如
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。
- 选择 保留更改。
-
要保存规则,请选择 保存到库。
要确保发布标记中的所有更改,请执行以下操作
-
选择 初始生成 作为要生成的库。
-
选择 生成。
验证Assurance中的设置
要验证Assurance中的设置,请执行以下操作:
-
转到Assurance UI。
-
如果左边栏中尚不可用,请在左边栏中选择 配置,然后选择
-
选择 保存。
-
在左边栏中选择 映射和模拟。
-
将地图移至您的某个POI的位置。
-
选择
-
选择您的POI。
-
从弹出窗口中,选择
-
从左边栏中选择 事件,您应该会看到模拟的事件。
在应用程序中实施地标
如前面的课程中所述,安装移动标记扩展仅提供配置。 接下来,您必须安装并注册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.processRegionEvent
API将地理位置信息传递给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:app ChevronDown Gradle脚本
-
在Android Studio项目导航器中导航到 Android
-
确保
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
suspend fun processGeofence(geofence: Geofence?, transitionType: Int)
函数。 添加以下代码:code language-kotlin // Process geolocation event Places.processGeofence(geofence, transitionType)
此
Places.processRegionEvent
API将地理位置信息传递给Places服务。 -
在Android Studio项目导航器中导航到 Android
-
对于“录入”按钮,输入以下代码:
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上方,例如伦敦。
-
点按
-
点按POI的标签,这将打开 附近POI 工作表。
-
按 进入 或 退出 按钮以模拟来自应用程序的地理围栏进入和退出事件。
-
您应会在Assurance UI中看到这些事件。 在Events和Places Service事件中。
-
转到 位置 选项卡。
-
选择 使用和/或模拟地理围栏。
-
点按显示的红色圆圈中的某个位置。
-
按 进入 或 退出 按钮以模拟来自应用程序的地理围栏进入和退出事件。
-
您应会在Assurance UI中看到这些事件。
后续步骤
您现在应该拥有所有工具,以便开始在应用程序中为地理位置功能添加更多功能。 由于您已将事件转发到Edge Network,因此,在为Experience Platform设置应用程序后,您应该会看到应用程序中使用的配置文件所显示的体验事件。
在本教程的Journey Optimizer部分中,您会看到体验事件可用于触发历程(请参阅推送通知和使用Journey Optimizer的应用程序内消息传送)。 例如,通常情况下,当用户进入实体商店的地理围栏时,向应用程序用户发送推送通知并促销某些产品。
为您的应用程序实施的地理位置功能正在最大限度地减少代码。 您在标记属性中定义的Places服务、数据元素和规则提供了大多数功能。 或者,您可以使用包含填充的Edge.sendEvent
对象的XDM有效负载,通过 API(有关详细信息,请参阅事件placeContext
)直接在您的应用程序中实施相同的功能。