开发

共享空间锚点故障排除指南

更新时间: 2026年4月14日

概览

本主题为影响 Meta Horizon 操作系统共享空间锚点的各种已知常见情况提供了故障排除建议。
如需了解有效使用的技巧,请参阅空间锚点的使用技巧

前提条件

共享空间锚点可在 SDK v59 或更高版本中与 Meta Quest 3 结合使用,在 SDK v71 或更高版本中与 Meta Quest 3S 结合使用,在 SDK v47 或更高版本中与 Meta Quest Pro 结合使用,在 SDK v49 或更高版本中与 Meta Quest 2 结合使用。本页面上的大多数问题需要使用设备日志才能诊断。请参阅对环境执行 adb logcat 使用设置来检索日志。

已知问题:

本部分列出了您在开发过程中可能会遇到的几种情况,简要解释了相关原因,并提供了相应的问题解决方案。

确保已启用增强版空间服务 (Enhanced Spatial Services)

必须启用设备设置增强版空间服务 (Enhanced Spatial Services),共享空间锚点才能正常运作。用户可以在 Settings(设置)> Privacy & Safety(隐私与安全)> Device Permission(设备权限)> Enhanced Spatial Services(增强版空间服务)下找到此项设置。
您的应用可以检测到此设置被禁用并通知用户开启此设置。此设置被禁用时,如果共享 SSA 或将 SSA 保存到云端,您的应用将收到错误代码
EOculusXRAnchorResult::Failure_SpaceCloudStorageDisabled
禁用此设置后,在将 SSA 分享或保存到云时,应用会收到此错误代码。应用应检查是否收到此错误,并告知用户需要启用增强版空间服务,然后 SSA 才能在您的体验中运行。

无法加载和定位空间锚点

以下是系统无法定位之前所存储空间锚点的几个示例:
  • 无法识别用户所在的空间。
  • 尝试从存储位置 Cloud 加载锚点时,需要确认已启用 Enhanced Spatial Services(增强版空间服务)设置。
如要从中恢复正常,您需要:
  • 让用户将内容放置在内容所属之处,或让用户走到已知位置,以重建场景,进而帮助系统恢复内容。
  • 如果是共享空间锚点,请通知用户开启增强版空间服务

应用不受信任

对持久锚点执行的操作失败,表明程序包不受信任。
访问本地或共享空间锚点时,系统会对请求访问持久空间锚点的应用程序的身份进行验证。由于此验证流程会使用在商店中注册的信息,您必须先在 developer.meta.com 上注册自己的应用,然后该应用才能保留或共享空间锚点。
如果您遇到此问题,日志将包含以下消息:Package <your application's package ID> is not trusted, status: <error code>, sessionUuid: <id>"

解决方案

  • 前往 developer.meta.com
  • 在您的开发者团队下,点击新建应用
  • 选择 Meta Horizon 商店。如果您使用 Link 在您的电脑上运行应用,请重复以上步骤,再创建一个 Rift 应用。
  • 如果您还没有完成年龄段自证,请完成。必须完成此操作才能申请平台功能访问权限。
  • 从左侧导航栏中前往隐私 > 数据使用情况检查,然后请求“用户编号”和“用户个人主页”平台功能的访问权限。
  • 从开发者面板左侧导航栏中前往开发 > API,并记下应用编号。
  • 在 Unreal 项目中,打开 DefaultEngine.ini,在 [OnlineSubsystemOculus] 下将应用编号设置为 MobileAppId=YOUR_APP_ID
  • 将头戴设备设置为开发者模式。
  • 确保您以开发者身份登录,或使用您要开发的应用程序所属的开发者团队的一个测试账户登录。

锚点下载失败

客户无法下载指定锚点。导致此错误的常见原因是:
  • 指定的锚点在云端上不存在,或尝试下载锚点的用户无权访问这些锚点。
  • 锚点已下载,但设备无法使用从发起共享的设备收到的空间数据进行定位,因为用户对环境的观察不足。
如要确定您遇到的是哪个问题,请在日志中查找以下消息。
  • 如果您看到以下任意一条消息,表示下载步骤本身就已失败:
    • xr_cloud_anchor_service: Downloaded 0 anchors
    • xr_cloud_anchor_service: Failed to download Map for spatial anchors
    • xr_cloud_anchor_service: Failed to download spatial anchor with error:
  • 如果来自日志通道的日志 SlamAnchorRuntimeIpcServer 中包含下方消息,表示用户可以下载锚点,但设备无法在从发起共享的设备收到的空间数据中定位自身。您可能会看到错误代码 OVRSpatialAnchor.OperationResult.Failure_SpaceMappingInsufficient 和消息 Import task failed with code: <error> message: <message>
  • 如果您看到错误代码 OVRSpatialAnchor.OperationResult.Failure_SpaceNetworkRequestFailedOVRSpatialAnchor.OperationResult.Failure_SpaceNetworkTimeout,表示连接云端时出现网络问题。请确保设备 Wi-Fi 连接正常,然后重试。

解决方案

由于以下常见原因,锚点可能在云端不存在或用户可能没有访问权限,进而导致下载失败:
  • 地图/锚点已过期。上传到云端的任何锚点都有存留时间 (TTL)。TTL 过期后,锚点会从云端中擦除。
  • 空间锚点未成功上传到云端。
  • 锚点的预期接收方没有访问权限。发送方可能未将锚点与接收方共享,或共享操作可能失败了。
  • 设备未连接网络。请确保设备 Wi-Fi 工作正常,然后重试。
如要解决此问题,锚点的发送方需要通过执行以下步骤再次上传和共享锚点:
  1. 使用新 UUID 创建一个新锚点,将其保存并重新共享。
  2. 通过在 logcat 中搜索以下消息,确认上传成功:xr_cloud_anchor_service: Successfully uploaded spatial anchors:xr_cloud_anchor_service: UUID: <some uuid>
  3. 通过在 logcat 中搜索以下消息,确认共享成功:xr_cloud_anchor_service: Share spatial anchor success.。如果共享不成功,请按照锚点共享失败部分中的故障排除步骤操作。

锚点上传失败

空间锚点无法上传。通过搜索以下消息,确定失败模式:xr_cloud_anchor_service: Number of anchors uploaded did not match number of anchors returnedxr_cloud_anchor_service: Failed to upload spatial anchor with error <error>。错误消息表明,空间锚点上传到云端失败。一个常见原因是遇到内部服务问题,如资源限制或端点不可用。

解决方案

查看实际错误描述,了解操作失败的原因。如果错误描述表明空间锚点本身有问题,请尝试创建和上传一个新空间锚点。

锚点共享失败

与其他用户共享空间锚点失败。可能存在以下几个原因:
  • 指定的用户编号不存在或无效
  • 空间锚点未上传到云端
调试共享问题的第一步是查看 Share() 函数返回的结果代码。参阅下文,了解几个常见错误情况的可能原因和缓解措施。
如要进一步诊断此问题,请在日志中搜索以下消息:xr_cloud_anchor_service: Failed to share spatial anchor with error <error from cloud>

解决方案

  • 如果空间锚点未上传,首先调用保存到云端操作,然后重新共享该锚点。
  • 如果一个空间锚点已上传,您无需重新上传即可重新共享该锚点。在这种情况下,请调用共享操作,而不是调用保存操作。

锚点位置不正确

共享锚点在发送方和接收方的设备上并不位于同一位置。
在测试过程中,您可能会发现共享空间锚点不在接收方设备的预期位置上。如果系统未正确找到共享锚点,这种情况就可能会发生。

解决方案

为获得最佳体验,用户在使用共享空间锚点体验之前,应进入透视效果中并围着自己所在游戏区的中心绕一个大圈(同时与他人沟通交流并时刻注意他人的位置)。(非必要操作)您可以指示用户在游戏区到处走走看看。如果一个锚点的姿势未自动纠正,可销毁该锚点并重新下载。

处理 SSA 错误代码

XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB

尝试保存、加载或共享锚点时,您遇到
EOculusXRAnchorResult::Failure_SpaceCloudStorageDisabled
尝试上传、下载或共享空间锚点时,您可能会收到错误“云存储已禁用”。此外,日志还将包含以下一个或多个错误:
  • Request denied based on storage location for package {}, sessionUuid:{}
  • getCloudPermissionEnabled: oculus_spatial_anchor_cloud=false
一些已知原因是:
  • 用户在设置 > 隐私与安全 > 设备权限 > 增强版空间服务中禁用了“增强版空间服务”,或者在首次启动使用此功能的体验时显示的对话框中选择了“以后再说”。在这种情况下,日志应包含以下任意一个错误:
    • PreferencesManager: anchor_persistence_cloud_anchor_service_enabled: false
    • userPreference(anchor_persistence_cloud_anchor_service_enabled)=false
  • 头戴设备和/或操作系统版本不支持共享空间锚点。在这种情况下,日志应包含以下任意一个错误:
    • checkGatekeeper gatekeeperName: oculus_spatial_anchor_cloud, value: false
    • GK(oculus_spatial_anchor_cloud)=false

解决方案

用户必须采取行动,为增强版空间服务授予权限,才能使此功能运行。您可以显示一个提示,指示用户在设置 > 隐私与安全 > 设备权限 > 增强版空间服务中启用此权限。

XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB

尝试保存、上传或共享锚点时,您遇到 XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB
这表示您正在尝试为未启用所需组件的锚点执行操作。这可能是因为您尝试保存、上传或共享的场景锚点是由 Meta Quest 操作系统来管理。

解决方案

确保您尝试保存或共享的每个锚点都是空间锚点(而不是场景锚点)。在 Unity 和 Unreal 中,您使用的对象类别将表示该对象是否是空间锚点。
如果您正在使用 OpenXR API,在 XrSpace 存在的情况下,在保存或上传锚点之前,请使用以下代码检查组件状态:
XrSpaceComponentStatusFB storableStatus;
xrGetSpaceComponentStatusFB(
    space, XR_SPACE_COMPONENT_TYPE_STORABLE_FB, &storableStatus));
if (storableStatus.enabled) {
    // Save or upload the anchor.
}
在 XrSpace 存在的情况下,在共享锚点之前,请使用以下代码检查组件状态:
XrSpaceComponentStatusFB sharableStatus;
xrGetSpaceComponentStatusFB(
    space, XR_SPACE_COMPONENT_TYPE_SHARABLE_FB, &sharableStatus));
if (sharableStatus.enabled) {
    // Share the anchor.
}

XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB

尝试保存、加载或共享锚点时,您遇到
EOculusXRAnchorResult::Failure_SpaceMappingInsufficient
当设备对当前实际环境的映射不足以可靠地保存或加载 SSA 时,就会发生此错误。

解决方案

提示用户环顾房间四周,以确保设备完全映射了这一空间,然后重新尝试操作。

XR_ERROR_SPACE_LOCALIZATION_FAILED_FB

尝试保存、加载或共享锚点时,您遇到
EOculusXRAnchorResult::Failure_SpaceLocalizationFailed
锚点已从云端成功加载,但无法与设备所处的实际环境地图对齐时,就会发生此错误。

解决方案

保存和共享 SSA 的用户与尝试加载 SSA 的用户之间协调不佳(即主机用户要求访客用户加载不在他们当前空间的锚点)时,通常会发生此错误
一个可能的缓解措施是:提示用户环顾房间四周,以确保设备完全映射了这一空间,然后重新尝试导致此失败的操作。

XR_ERROR_SPACE_NETWORK_TIMEOUT_FB

尝试保存、加载或共享锚点时,您遇到
EOculusXRAnchorResult::Failure_SpaceNetworkTimeout
由于网络超时无法完成云保存和云加载时,就会发生此错误。

解决方案

缓解此错误的第一步是重试操作。其他可能适宜的操作是提醒用户其网络连接太慢而无法可靠地加载、保存或共享 SSA。如果此问题持续存在,考虑在您的应用中对此功能进行限制。

XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB

尝试保存、加载或共享锚点时,您遇到
EOculusXRAnchorResult::Failure_SpaceNetworkRequestFailed
由于网络超时以外的原因无法完成云保存和云加载时,就会发生此错误。

解决方案

如果您的应用收到此错误,设备很可能已断开网络连接。可能适宜的操作是:提醒用户其网络连接不可靠和/或需要重试之前尝试的操作。

了解更多

请阅读以下页面,继续了解空间锚点: