ARCore Cloud Anchor API(或 ARCore Cloud Anchor 服务)可为您的 iOS 应用提供云锚点功能,从而让 iOS 和 Android 设备上的用户可以共享 AR 体验。
本指南将介绍如何执行以下操作:
- 设置开发环境以使用云锚点
- 在示例应用中尝试托管和解析锚点
前提条件
- Xcode 13.0 或更高版本
- CocoaPods 1.4.0 或更高版本(如果使用 Cocoapods)
- 运行 iOS 12.0 或更高版本且与 ARKit 兼容的 Apple 设备 (需要 iOS 12.0 或更高版本的部署目标)
使用 Cloud Anchors
以下步骤使用 Cloud Anchors 示例应用介绍了配置和构建支持 ARCore Cloud Anchors 的应用所涉及的关键任务。
获取 Cloud Anchors 示例应用
从 GitHub 克隆或下载 ARCore SDK for iOS,获取示例应用代码。
打开终端或 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 在下列二者之间共享云锚点 ID: 设备。您可以在自己的应用中使用不同的解决方案。
如需在示例应用中设置 Firebase 数据库,请执行以下操作:
- 按照 Firebase 说明将 Firebase 添加到您的应用。
- 下载添加过程中生成的
GoogleService-Info.plist
文件 将 Firebase 添加至您的应用。 - 为示例启用 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 update
CloudAnchorExample 应用附带一个 Podfile
,此配置文件已使用您需要的 ARCore SDK 和 iOS 版本预配置。如需安装这些依赖项,请执行以下操作:
- 打开终端窗口,然后从
pod update
Xcode 项目已存在。
这将生成一个.xcworkspace
文件,稍后您将使用该文件来构建和 运行应用所需的资源
如需详细了解如何在您自己的应用中配置 Podfile
,请参阅将 ARCore SDK 添加到您的应用。
在 Xcode 中打开项目的
.xcworkspace
文件。为了避免构建错误,请确保您正在从
.xcworkspace
文件构建,而不是.xcodeproj
文件。
更改应用软件包 ID
在 Xcode 中,更改应用的软件包 ID,以便与您的团队一起签署应用。
构建并运行应用
连接您的设备并在 Xcode 中启动应用。
(可选)如果您要构建和运行示例应用,请参阅以下内容 部分,详细了解如何使用该应用托管和解析云锚点。
试用示例应用
从
.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.46.0'
- 打开一个终端窗口,然后从 Xcode 项目所在的文件夹运行
pod update
。
这会生成一个.xcworkspace
文件,您将使用此文件构建和运行应用。
永久性云锚点
如托管具有持久性的云锚点中所述,
您可以为云锚点提供最长 365 天的存留时间。适用于以下应用的示例代码:
/arcore-ios-sdk-master/Examples/PersistentCloudAnchorExample
中提供了使用永久性云锚点的教程,
来自 GitHub 的 ARCore SDK for iOS 目录下。
后续步骤
请参阅 iOS 云锚点开发者指南,浏览示例应用代码并详细了解如何在您自己的应用中使用云锚点。
详情请参阅 ARCore iOS API 参考。