使用地标
了解如何在应用程序中使用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
。 -
选择 EVENTS 下的 。
-
从 扩展 列表中选择 地标,并从 事件类型 列表中选择 输入POI。
-
选择 保留更改。
。
-
-
选择 ACTIONS 下的 。
-
从 扩展 列表中选择 移动核心,从列表 操作类型 中选择 附加数据。 此操作附加有效负荷数据。
-
在 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中插入
{%% ... %%}
数据元素占位符值。 弹出对话框允许您选择创建的任何数据元素。 -
选择 保留更改。
-
-
选择 移动核心 — 附加数据 操作旁边的 。
- 从 扩展 列表中选择 Adobe Experience PlatformEdge Network,然后选择 将事件转发到Edge Network。 此操作确保将事件和其他有效负载数据转发到PlatformEdge Network。
- 选择 保留更改。
-
要保存规则,请选择 保存到库。
让我们再创建一个规则
-
在 创建规则 屏幕中,输入规则的名称,例如
POI - Exit
。 -
选择 EVENTS 下的 。
- 从 扩展 列表中选择 地标,并从 事件类型 列表中选择 退出POI。
- 选择 保留更改。
-
选择 ACTIONS 下的 。
-
从 扩展 列表中选择 移动核心,从 操作类型 列表中选择 附加数据。
-
在 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 PlatformEdge Network,然后选择 将事件转发到Edge Network。
- 选择 保留更改。
-
要保存规则,请选择 保存到库。
要确保发布标记中的所有更改,请执行以下操作
- 选择 初始生成 作为要生成的库。
- 选择 生成。
验证Assurance中的设置
要在Assurance中验证设置,请执行以下操作:
- 转到Assurance UI。
- 如果左边栏中尚不可用,请在左边栏中选择 配置,然后选择 事件 旁边的 和 PLACES SERVICE 下的 映射和模拟。
- 选择 保存。
- 在左边栏中选择 映射和模拟。
- 将地图移动到某个POI的位置。
- 选择 模拟加载POI。 使用圆圈和pin标识您的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) }
使用应用程序进行验证
-
在设备或模拟器中打开您的应用程序。
-
转到 位置 选项卡。
-
四处移动(拖动)地图,以确保蓝色中间圆圈位于某个POI的上方,例如伦敦。
-
点按 {width="20"},直到您看到类别和名称显示在带有pin的红色位置的标签中。
-
点按POI的标签,这将打开 附近POI 工作表。
{width="300"}
-
按 进入 或 退出 按钮以模拟来自应用程序的地理围栏进入和退出事件。
{width="300"}
-
您应会在Assurance UI中看到这些事件。
后续步骤
您现在应该拥有所有工具,以便开始在应用程序中为地理位置功能添加更多功能。 由于您已将事件转发给Edge Network,因此,在为Experience Platform设置应用程序后,您应该会看到应用程序中使用的配置文件所显示的体验事件。
在本教程的Journey Optimizer部分中,您将看到体验事件可用于触发历程(请参阅推送通知和使用Journey Optimizer的应用程序内消息传送)。 例如,通常情况下,当用户进入实体商店的地理围栏时,向应用程序用户发送推送通知并促销某些产品。
您已看到应用程序功能的实施,这些功能主要由Places服务以及您在标记属性中定义的数据元素和规则驱动。 因此,请最大限度地减少应用程序中的代码。 或者,您可以使用包含填充的placeContext
对象的XDM有效负载,通过Edge.sendEvent
API(有关详细信息,请参阅事件)直接在您的应用程序中实施相同的功能。