ARCore Cloud Anchor API(即 ARCore 云锚点服务)可为您的 iOS 应用提供云锚点功能,使 iOS 和 Android 设备上的用户能够共享 AR 体验。
本指南将介绍如何执行以下操作:
- 设置您的开发环境以使用云锚点
- 在示例应用中尝试托管和解析锚点
前提条件
- Xcode 13.0 或更高版本
- CocoaPods 1.4.0 或更高版本(如果使用 Cocoapods)
- 运行 iOS 12.0 或更高版本且与 ARKit 兼容的 Apple 设备(部署目标必须为 iOS 12.0 或更高版本)
使用云锚点
以下步骤使用 Cloud Anchors 示例应用来展示配置和构建支持 ARCore 云锚点的应用的关键任务。
获取 Cloud Anchors 示例应用
从 GitHub 克隆或下载 ARCore SDK for iOS,以获取示例应用代码。
打开终端或 Finder 窗口,然后转到您克隆或下载 SDK 的文件夹。
您可以在
/arcore-ios-sdk-master/Examples/CloudAnchorExample
中找到示例应用代码。永久性云锚点示例应用代码位于
/arcore-ios-sdk-master/Examples/PersistentCloudAnchorExample
中。
会话设置
在设置会话的过程中,示例应用会执行以下重要任务:
- 创建
GARSession
- 创建并运行
ARSession
- 设置
ARSessionDelegate
。 - 将
ARFrame
传递给session:didUpdateFrame:
方法中的GARSession
。
设置云锚点 ID 共享
云锚点示例应用使用 Firebase 在设备之间共享云锚点 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 应用附带Podfile
预先配置了您需要的 ARCore SDK 和 iOS 版本。如需安装这些依赖项,请执行以下操作:
- 打开终端窗口,然后从 Xcode 项目所在的文件夹中运行
pod update
。
这会生成一个.xcworkspace
文件,您稍后会使用该文件构建和运行应用。
如需详细了解如何在自己的应用中配置 Podfile
,请参阅将 ARCore SDK 添加到您的应用。
在 Xcode 中打开项目的
.xcworkspace
文件。为了避免构建错误,请确保从
.xcworkspace
文件(而不是.xcodeproj
文件)进行构建。
更改 app bundle 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.44.0'
- 打开终端窗口,然后从 Xcode 项目所在的文件夹中运行
pod update
。
这会生成一个用于构建和运行应用的.xcworkspace
文件。
永久性云锚点
如使用持久性托管云锚点中所述,您可以为云锚点指定长达 365 天的存留时间。来自 GitHub 的 ARCore SDK for iOS 的 /arcore-ios-sdk-master/Examples/PersistentCloudAnchorExample
目录提供了使用永久性云锚点的示例代码。
后续步骤
请参阅 iOS 云锚点开发者指南,探索示例应用代码,并详细了解如何在您的应用中使用云锚点。
请查看 ARCore iOS API 参考文档中的详细信息。