ARCore Cloud Anchor API(或 ARCore Cloud Anchor 服务)可为您的 iOS 应用提供云锚点功能,让 iOS 和 Android 设备上的用户能够共享 AR 体验。
本指南将介绍如何执行以下操作:
- 设置开发环境以使用 Cloud Anchors
- 在示例应用中试用托管和解析锚点
前提条件
- Xcode 13.0 或更高版本
- 如果使用 Cocoapods,则需要 Cocoapods 1.4.0 或更高版本
- 搭载 iOS 12.0 或更高版本且支持 ARKit 的 Apple 设备(部署目标必须为 iOS 12.0 或更高版本)
使用 Cloud Anchors
以下步骤使用 Cloud Anchors 示例应用向您展示配置和构建支持 ARCore Cloud Anchors 的应用的关键任务。
获取 Cloud Anchors 示例应用
从 GitHub 克隆或下载适用于 iOS 的 ARCore SDK,以获取示例应用代码。
打开一个终端或 Finder 窗口,然后前往您克隆或下载 SDK 的文件夹。
您可以在
/arcore-ios-sdk-master/Examples/CloudAnchorExample
中找到示例应用代码。持久云锚点示例应用代码位于
/arcore-ios-sdk-master/Examples/PersistentCloudAnchorExample
中。
会话设置
在设置会话的过程中,示例应用会执行以下重要任务:
- 创建
GARSession
- 创建
ARSession
并运行它 - 设置
ARSessionDelegate
。 - 在
session:didUpdateFrame:
方法中将ARFrame
传递给GARSession
。
设置 Cloud Anchor ID 共享
Cloud Anchors 示例应用使用 Firebase 在设备之间共享 Cloud Anchor ID。您可以在自己的应用中使用其他解决方案。
如需在示例应用中设置 Firebase 数据库,请执行以下操作:
- 按照 Firebase 说明将 Firebase 添加到您的应用。
- 下载在将 Firebase 添加到应用时生成的
GoogleService-Info.plist
文件。 - 为该示例启用 Firebase 存储空间:
- 前往 Firebase 控制台,然后选择您为示例应用设置的项目。
- 选择 Database 面板。
- 在 Realtime Database 选项上,点击 Get Started。
- 系统随即会打开 Security rules for Realtime Database 菜单。
- 为了运行示例,请选择 Start in test mode。
- 请注意,如果您要为计划发布的应用使用 Firebase,则应使用更严格的安全规则。
- 在 Xcode 中,将
GoogleService-Info.plist
文件添加到应用的Info.plist
旁边。
设置 ARCore API
如需使用云锚点,您必须先为应用设置 ARCore API。
运行 pod 更新
CloudAnchorExample 应用随附一个预配置了所需 ARCore SDK 和 iOS 版本的 Podfile
。如需安装这些依赖项,请执行以下操作:
- 打开一个终端窗口,然后从 Xcode 项目所在的文件夹中运行
pod update
。
这会生成一个.xcworkspace
文件,您稍后将使用该文件构建和运行应用。
如需详细了解如何在您自己的应用中配置 Podfile
,请参阅将 ARCore SDK 添加到您的应用。
在 Xcode 中打开项目的
.xcworkspace
文件。为避免构建错误,请确保您是从
.xcworkspace
文件(而非.xcodeproj
文件)进行构建。
更改应用软件包 ID
在 Xcode 中,更改应用的软件包 ID,以便您可以使用团队账号为应用签名。
构建并运行应用
连接设备,然后在 Xcode 中启动应用。
(可选)如果您要构建和运行示例应用,请参阅下一部分,详细了解如何使用该应用托管和解析 Cloud 锚点。
试用示例应用
从
.xcworkspace
文件构建并运行示例应用,以便在设备上启动该应用。如果系统提示,请向应用授予相机权限。然后,ARKit 会开始检测摄像头前面的平面。
点按 HOST 进入托管模式。系统会生成一个用于共享托管锚点的房间代码,并将其显示在屏幕上。
点按一个平面,即可开始在该平面上托管云锚点。
- 该应用会在平面上放置 Andy Android 对象,并将锚点附加到该对象。
- 系统会将主机请求发送到 ARCore API 云端点。主机请求包含表示锚点相对于其附近视觉特征的位置的数据。
- 托管锚点后,它会获得一个 ID,用于解析此空间中的云锚点。
点按 RESOLVE 并输入房间代码,即可使用同一设备或其他设备访问之前为此房间托管的云锚点。
- 系统会向 ARCore API 云端点发送解析请求。
- 解析请求包含云锚点 ID。如果 ID 与托管的锚点匹配且本地化成功,服务器会返回锚点在本地坐标系中的转换。
- 示例应用使用此转换将锚点添加到场景,并渲染连接到该锚点的虚拟对象。
将 ARCore SDK 添加到您的应用
在您自己的应用中,您需要更新 Podfile
以添加 ARCore SDK 和受支持的 iOS 版本。具体操作步骤如下:
将以下
platform
和pod
添加到项目的Podfile
:platform :ios, '11.0' pod 'ARCore/CloudAnchors', '~> 1.48.0'
- 打开一个终端窗口,然后从 Xcode 项目所在的文件夹中运行
pod update
。
这会生成一个.xcworkspace
文件,供您用来构建和运行应用。
持久云锚点
如托管具有持久性的云锚点中所述,您可以为云锚点设置最长 365 天的生存时间。如需使用永久性云锚点,请参阅 GitHub 上的 ARCore SDK for iOS 的 /arcore-ios-sdk-master/Examples/PersistentCloudAnchorExample
目录中的示例代码。
后续步骤
请参阅 适用于 iOS 的 Cloud Anchors 开发者指南,探索示例应用代码,并详细了解如何在您自己的应用中使用 Cloud Anchors。
如需了解详情,请参阅 ARCore iOS API 参考文档。