在 Shared Space 中运行 iPad 和 iPhone App
Run your iPad and iPhone apps in the Shared Space
2023年6月5日
一句话判断
大多数 iPad 和 iPhone App 在空间计算设备上开箱即用,只需关注手势适配、ARKit 兼容性和 Info.plist 配置即可。
这场 Session 讲了什么
Kellie 系统讲解了 iPad/iPhone App 在新平台上运行的兼容性情况:
开箱即用。系统优先展示 iPad 版本(横屏模式),iPhone-only App 以竖屏比例显示。如果 App 支持多方向,窗口右上角会显示旋转按钮。拖拽窗口角落可以缩放,系统保持宽高比不变。用户的交互方式(注视+捏合、直接触摸、蓝牙触控板、手柄)都会被转换为 App 已有的事件类型。
系统级支持。Touch ID/Face ID 自动适配为 Optic ID;系统视图(文档管理器、照片选择器)自动匹配平台外观;Look to Dictate(注视麦克风图标后语音输入)是一个新能力。
功能差异。没有设备旋转的概念(Info.plist 新增 UIPreferredDefaultInterfaceOrientation);手势最多支持两个同时触点;ARKit 的旧 API 不可用,需要用新 API 重建;摄像头需要先验证可用性再使用。
部署。安装 xrOS SDK 后,Xcode 自动添加”xrOS Device (Designed for iPad)“运行目标。所有兼容的 App 会自动出现在 App Store 上。
值得深挖的点
手势的双触点限制。自然输入每只手算一个触点,所以同时最多两个。系统手势(两个触点以内)全部兼容,但自定义手势识别器可能需要调整。
Look to Dictate 的启用策略。这个功能默认对 iPad/iPhone App 关闭,需要开发者主动启用。因为它会改变搜索栏的 UI(放大镜变成麦克风),Apple 给了开发者验证行为的时间。启用后是跨平台安全的——在 iOS/iPadOS 上是空操作。
ARKit 是最大的破坏性变更。旧版 ARView 和 ARSession 在新设备上不工作。如果你的 App 依赖 ARKit,需要用新的空间计算 API 重建这部分功能。
代码片段
// 在 Info.plist 中设置默认界面方向
// 新增键(仅影响空间计算平台)
key: UIPreferredDefaultInterfaceOrientation
value: UIInterfaceOrientationLandscapeLeft
// 启用 Look to Dictate(UIKit)
searchBar.isLookToDictateEnabled = true
// SwiftUI 中启用
.searchable(content: $searchText) {
// 搜索内容
}
.searchDictationBehavior(.on)
// 安全检查摄像头可用性
let discoverySession = AVCaptureDevice.DiscoverySession(
deviceTypes: [.builtInWideAngleCamera],
mediaType: .video,
position: .unspecified
)
// 新设备有更多摄像头,但并非所有都对 App 可用
let availableCameras = discoverySession.devices
if !availableCameras.isEmpty {
// 安全使用摄像头
}
最佳实践
- 用 availability 检查来处理平台差异,而不是硬编码平台判断。
- 在 Info.plist 中确认
UISupportedInterfaceOrientations和UIRequiredDeviceCapabilities的值是否准确。 - 测试自定义手势在双触点限制下的表现。
- 如果你的 App 用了 ARKit,评估是做”Designed for iPad”移植还是完全重写。
- 安装 xrOS SDK 后直接 build & run,大多数 App 不需要任何改动。
还有什么值得关注
- “Re-imagine your ARKit app for spatial experiences” 讲了 ARKit 的新 API
- “Meet Core Location for spatial computing” 讲了定位适配
- “Explore App Store Connect for spatial computing” 讲了上架管理
- 系统界面(文档管理器、照片选择器)会自动匹配平台外观,不需要额外适配