共享空间锚点故障排除指南 更新时间: 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 anchorsxr_cloud_anchor_service: Failed to download Map for spatial anchorsxr_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_SpaceNetworkRequestFailed 或 OVRSpatialAnchor.OperationResult.Failure_SpaceNetworkTimeout,表示连接云端时出现网络问题。请确保设备 Wi-Fi 连接正常,然后重试。 由于以下常见原因,锚点可能在云端不存在或用户可能没有访问权限,进而导致下载失败:
地图/锚点已过期。上传到云端的任何锚点都有存留时间 (TTL)。TTL 过期后,锚点会从云端中擦除。 空间锚点未成功上传到云端。 锚点的预期接收方没有访问权限。发送方可能未将锚点与接收方共享,或共享操作可能失败了。 设备未连接网络。请确保设备 Wi-Fi 工作正常,然后重试。 如要解决此问题,锚点的发送方需要通过执行以下步骤再次上传和共享锚点:
使用新 UUID 创建一个新锚点,将其保存并重新共享。 通过在 logcat 中搜索以下消息,确认上传成功:xr_cloud_anchor_service: Successfully uploaded spatial anchors: 和 xr_cloud_anchor_service: UUID: <some uuid> 通过在 logcat 中搜索以下消息,确认共享成功:xr_cloud_anchor_service: Share spatial anchor success.。如果共享不成功,请按照锚点共享失败 部分中的故障排除步骤操作。 空间锚点无法上传。通过搜索以下消息,确定失败模式:xr_cloud_anchor_service: Number of anchors uploaded did not match number of anchors returned 和 xr_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>。
如果空间锚点未上传,首先调用保存到云端操作,然后重新共享该锚点。 如果一个空间锚点已上传,您无需重新上传即可重新共享该锚点。在这种情况下,请调用共享操作,而不是调用保存操作。 共享锚点在发送方和接收方的设备上并不位于同一位置。
在测试过程中,您可能会发现共享空间锚点不在接收方设备的预期位置上。如果系统未正确找到共享锚点,这种情况就可能会发生。
为获得最佳体验,用户在使用共享空间锚点体验之前,应进入透视效果中并围着自己所在游戏区的中心绕一个大圈(同时与他人沟通交流并时刻注意他人的位置)。(非必要操作)您可以指示用户在游戏区到处走走看看。如果一个锚点的姿势未自动纠正,可销毁该锚点并重新下载。
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: falseuserPreference(anchor_persistence_cloud_anchor_service_enabled)=false 头戴设备和/或操作系统版本不支持共享空间锚点。在这种情况下,日志应包含以下任意一个错误:
checkGatekeeper gatekeeperName: oculus_spatial_anchor_cloud, value: falseGK(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
。
由于网络超时以外的原因无法完成云保存和云加载时,就会发生此错误。
如果您的应用收到此错误,设备很可能已断开网络连接。可能适宜的操作是:提醒用户其网络连接不可靠和/或需要重试之前尝试的操作。
请阅读以下页面,继续了解空间锚点: