使用地标

了解如何在应用程序中使用Places地理位置服务。

Adobe Experience Platform数据收集位置服务是一种地理位置服务,它使具有位置感知的移动应用程序能够了解位置上下文。 该服务使用丰富且易于使用的SDK界面,并随附了灵活的兴趣点(POI)数据库。

先决条件

  • 所有包依赖项都已放置在Xcode项目中。
  • 在AppDelegate中注册的扩展。
  • 已将MobileCore配置为使用开发appId。
  • 导入的SDK。
  • 通过上述更改成功构建并运行应用程序。

学习目标

在本课程中,您将执行以下操作

  • 了解如何在Places服务中定义目标点。
  • 使用Places扩展更新您的标记属性。
  • 更新您的架构以捕获地理位置事件。
  • 验证Assurance中的设置。
  • 更新您的应用程序以注册Places扩展。
  • 从应用程序中的Places服务实施地理位置跟踪。

设置

要使Places服务在您的应用程序内但在Mobile SDK中正常工作,您必须进行一些设置。

定义地标

您可以在Places服务中定义一些目标点。

  1. 在数据收集UI中,选择​ 地标

  2. 选择 更多

  3. 从上下文菜单中选择​ 管理库

    管理库 {modal="regular"}

  4. 在​ 管理库 ​对话框中,选择​ 新建

  5. 在​ 创建库 ​对话框中,输入​ 名称,例如Luma

  6. 选择​ 确认

    创建库 {modal="regular"}

  7. 要关闭​ 管理库 ​对话框,请选择​ 关闭

  8. 返回​ POI管理,选择​ 导入POI

  9. 在​ 导入地标 ​对话框中选择​ 开始

  10. 从库列表中选择​ Luma

  11. 选择​ 下一步

    选择库 {modal="regular"}

  12. 下载Luma POI ZIP文件并将其解压缩到计算机上的某个位置。

  13. 在​ 导入地标 ​对话框中,将提取的luma_pois.csv文件拖放到​ 选择CSV文件 — 拖放您的文件。 您应会看到​ 验证成功 - 已成功验证CSV文件

  14. 选择​ 开始导入。 您应该看到​ 成功 - 已成功添加6个新POI

  15. 选择​ 完成

  16. 在​ POI管理 ​中,您应该会看到六个新的Luma商店已添加到列表中。 您可以在 列表 列表和 映射 映射视图之间切换。

    地标列表 {modal="regular"}

Install Places扩展

  1. 导航到​ 标记,找到您的移动标记属性并打开该属性。

  2. 选择​ 扩展

  3. 选择​ 目录

  4. 搜索​ Places ​扩展。

  5. 安装扩展。

    添加地标

  6. 在​ 安装扩展 ​对话框中:

    1. 从​ Luma ​选择库​ 列表中选择

    2. 请确保已选择您的工作库,例如​ 初始内部版本

    3. 从​ 保存到库 ​中选择​ 保存到库并生成

      安装Places扩展 {modal="regular"}

  7. 已重建您的库。

验证您的架构

验证您的架构(如创建架构中所定义)是否合并了必要的字段组和类以收集POI和地理位置数据。

  1. 导航到数据收集界面,然后从左边栏中选择​ 架构

  2. 从顶部栏中选择​ 浏览

  3. 选择您的架构以将其打开。

  4. 在架构编辑器中,选择​ 使用者体验事件

  5. 您看到​ placeContext ​对象,其中包含用于捕获POI交互和地理位置数据的对象和字段。

    架构位置 {modal="regular"}

更新您的标记属性

适用于标记的Places扩展提供了用于监视地理位置事件的功能,并允许您根据这些事件触发操作。 您可以使用此功能最大程度地减少必须在应用程序中实施的API编码。

数据元素

首先创建多个数据元素。

  1. 转到数据收集UI中的标记属性。

  2. 从左边栏中选择​ 数据元素

  3. 选择​ 添加数据元素

  4. 在​ 创建数据元素 ​屏幕中,输入名称,例如Name - Entered

  5. 从​ 扩展 ​列表中选择​ 地标

  6. 从​ 数据元素类型 ​列表中选择​ 名称

  7. 选择​ TARGET ​下的​ 当前POI

  8. 选择​ 保存到库
    数据元素 {modal="regular"}

  9. 使用下表中的信息重复步骤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

    您应该拥有以下数据元素列表。

    数据元素列表 {modal="regular"}

规则

接下来,您将定义用于这些数据元素的规则。

  1. 在标记属性中,从左边栏选择​ 规则

  2. 选择​ 添加规则

  3. 在​ 创建规则 ​屏幕中,输入规则的名称,例如POI - Entry

  4. 选择 EVENTS 下的​ 添加

    1. 从​ 扩展 ​列表中选择​ 地标,并从​ 事件类型 ​列表中选择​ 输入POI
    2. 选择​ 保留更改
      标记事件
  5. 选择 ACTIONS 下的​ 添加

    1. 从​ 扩展 ​列表中选择​ 移动核心,从列表​ 操作类型 ​中选择​ 附加数据。 此操作附加有效负荷数据。

    2. 在​ 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中插入 数据元素占位符值。 弹出对话框允许您选择创建的任何数据元素。

    3. 选择​ 保留更改
      标记操作 {modal="regular"}

  6. 选择 移动核心 — 附加数据 操作旁边的​ 添加

    1. 从​ 扩展 ​列表中选择​ Adobe Experience Platform Edge Network,然后选择​ 将事件转发到Edge Network。 此操作确保将事件和其他有效负载数据转发到Platform Edge Network。
    2. 选择​ 保留更改
  7. 要保存规则,请选择​ 保存到库

    规则 {modal="regular"}

让我们再创建一个规则

  1. 在​ 创建规则 ​屏幕中,输入规则的名称,例如POI - Exit

  2. 选择 EVENTS 下的​ 添加

    1. 从​ 扩展 ​列表中选择​ 地标,并从​ 事件类型 ​列表中选择​ 退出POI
    2. 选择​ 保留更改
  3. 选择 ACTIONS 下的​ 添加

    1. 从​ 扩展 ​列表中选择​ 移动核心,从​ 操作类型 ​列表中选择​ 附加数据

    2. 在​ JSON有效负载 ​中,粘贴以下有效负载:

      code language-json
      {
          "xdm": {
              "eventType": "location.exit",
              "placeContext": {
                  "geo": {
                      "city": "{%%City - Exited%%}"
                  },
                  "POIinteraction": {
                      "poiExits": {
                          "value": 1
                      },
                      "poiDetail": {
                          "name": "{%%Name - Exited%%}",
                          "category": "{%%Category - Exited%%}"
                      }
                  }
              }
          }
      }
      
    3. 选择​ 保留更改

  4. 选择 移动核心 — 附加数据 操作旁边的​ 添加

    1. 从​ 扩展 ​列表中选择​ Adobe Experience Platform Edge Network,然后选择​ 将事件转发到Edge Network
    2. 选择​ 保留更改
  5. 要保存规则,请选择​ 保存到库

    规则 {modal="regular"}

要确保发布标记中的所有更改,请执行以下操作

  1. 选择​ 初始生成 ​作为要生成的库。

  2. 选择​ 生成

    生成库 {modal="regular"}

验证Assurance中的设置

要验证Assurance中的设置,请执行以下操作:

  1. 转到Assurance UI。

  2. 如果左边栏中尚不可用,请在左边栏中选择​ 配置,然后选择 事件 旁边的​ 添加 ​和​ PLACES SERVICE ​下的​ 映射和模拟

  3. 选择​ 保存

  4. 在左边栏中选择​ 映射和模拟

  5. 将地图移至您的某个POI的位置。

  6. 选择 齿轮 模拟加载POI。 使用圆圈和pin标识您的POI。

  7. 选择您的POI。

  8. 从弹出窗口中,选择 齿轮 模拟进入事件

    模拟进入事件 {modal="regular"}

  9. 从左边栏中选择​ 事件,您应该会看到模拟的事件。

    AJO Decisioning验证 {modal="regular"}

在应用程序中实施地标

如前面的课程中所述,安装移动标记扩展仅提供配置。 接下来,您必须安装并注册Places SDK。 如果未清除这些步骤,请查看安装SDK部分。

NOTE
如果您已完成安装SDK部分,则Places SDK已安装,您可以跳过此步骤。
IMPORTANT
在您的应用程序中设置适用于Android的映射SDK需要您设置账单,因为您的使用会产生费用。 您可以使用唯一的应用程序ID和SHA-1密钥来限制成本。 有关更多详细信息,请参阅映射Android的SDK。 如果您不想设置帐单或产生成本,请跳过本课程。
iOS
  1. 在Xcode中,确保将AEP Places添加到包依赖关系中的包列表中。 请参阅Swift包管理器

  2. 在Xcode项目导航器中导航到​ Luma > Luma > AppDelegate

  3. 确保AEPPlaces是导入列表的一部分。

    code language-swift
    import AEPPlaces
    
  4. 请确保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
    ]
    
  5. 在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服务。

  6. 在Xcode的项目导航器中导航到​ Luma > Luma > Views > Location > GeofenceSheet

    1. 对于“录入”按钮,输入以下代码:

      code language-swift
      // Simulate geofence entry event
      Task {
          await MobileSDK.shared.processRegionEvent(regionEvent: .entry, forRegion: region)
      }
      
    2. 对于“退出”按钮,输入以下代码:

      code language-swift
      // Simulate geofence exit event
      Task {
          await MobileSDK.shared.processRegionEvent(regionEvent: .exit, forRegion: region)
      }
      
Android
  1. 在Android Studio中,确保aepsdk-places-android是​ Android:app ChevronDown ​Gradle脚本 中 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.Places

  4. 请确保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
    )
    
  5. 在Android Studio项目导航器中导航到​ Android ChevronDown > app > kotlin+java > com.adobe.luma.tutorial.android > 模型 > MobileSDK。 查找suspend fun processGeofence(geofence: Geofence?, transitionType: Int)函数。 添加以下代码:

    code language-kotlin
    // Process geolocation event
    Places.processGeofence(geofence, transitionType)
    

    Places.processRegionEvent API将地理位置信息传递给Places服务。

  6. 在Android Studio项目导航器中导航到​ Android ChevronDown > app > kotlin+java > com.adobe.luma.tutorial.android > 视图 > LocationView.k

    1. 对于“录入”按钮,输入以下代码:

      code language-kotlin
      // Simulate geofence entry event
      coroutineScope.launch {
          MobileSDK.shared.processGeofence(
             region,
             Geofence.GEOFENCE_TRANSITION_ENTER
          )
      }
      
    2. 对于“退出”按钮,输入以下代码:

      code language-kotlin
      // Simulate geofence entry event
      coroutineScope.launch {
          MobileSDK.shared.processGeofence(
              region,
              Geofence.GEOFENCE_TRANSITION_EXIT
          )
      }
      

使用应用程序进行验证

验证应用程序中的地理位置功能:

iOS
  1. 在设备或模拟器中打开您的应用程序。

  2. 转到​ 位置 ​选项卡。

  3. 四处移动(拖动)地图,以确保蓝色中间圆圈位于您的某个POI上方,例如伦敦。

  4. 点按 {width="20"},直到您看到类别和名称显示在带有pin的红色位置的标签中。

  5. 点按POI的标签,这将打开​ 附近POI ​工作表。

    {width="300"}

  6. 按​ 进入 ​或​ 退出 ​按钮以模拟来自应用程序的地理围栏进入和退出事件。

    {width="300"}

  7. 您应会在Assurance UI中看到这些事件。 在Events和Places Service事件中。

Android
  1. 转到​ 位置 ​选项卡。

  2. 选择​ 使用和/或模拟地理围栏

  3. 点按显示的红色圆圈中的某个位置。

    {width="300"}

  4. 按​ 进入 ​或​ 退出 ​按钮以模拟来自应用程序的地理围栏进入和退出事件。

    {width="300"}

  5. 您应会在Assurance UI中看到这些事件。

后续步骤

您现在应该拥有所有工具,以便开始在应用程序中为地理位置功能添加更多功能。 由于您已将事件转发到Edge Network,因此,在为Experience Platform设置应用程序后,您应该会看到应用程序中使用的配置文件所显示的体验事件。

在本教程的Journey Optimizer部分中,您会看到体验事件可用于触发历程(请参阅推送通知和使用Journey Optimizer的应用程序内消息传送)。 例如,通常情况下,当用户进入实体商店的地理围栏时,向应用程序用户发送推送通知并促销某些产品。

为您的应用程序实施的地理位置功能正在最大限度地减少代码。 您在标记属性中定义的Places服务、数据元素和规则提供了大多数功能。 或者,您可以使用包含填充的Edge.sendEvent对象的XDM有效负载,通过 API(有关详细信息,请参阅事件placeContext)直接在您的应用程序中实施相同的功能。

SUCCESS
现在,您已使用Experience Platform Mobile SDK中的Places扩展为地理定位服务启用应用程序。
感谢您投入时间学习Adobe Experience Platform Mobile SDK。 如果您有任何疑问、希望分享一般反馈或有关于未来内容的建议,请在此Experience League社区讨论帖子上分享这些内容。

下一步:将数据映射到Adobe Analytics

recommendation-more-help
9fed61f5-c338-47ad-8005-0b89a5f4af8b