已经有几年没有熬夜看 WWDC
了,这次为了见证苹果 XR
产品的发布,熬夜看完了整场发布会。发布会上的东西不少,几款硬件产品发布、几个系统更新等等。但是印象深刻的还是 Vision Pro
。苹果终于发布了这个传闻已久的产品,也是我非常期待的一款产品。后面也打算深入学习下相关的 Session
,为后续的开发做准备。
相信大家目前都有在开发或者维护的 iPhone
、iPad
产品。那么针对这些已经存在产品如何能够很好的支持 visionOS
呢?看了官方的相关资料,然后整理如下:
一、学习 visionOS
首先当然是学习 visionOS
相关的技能了。WWDC23
准备了46个 session
用于介绍 visionOS
一定会帮助你很好的学习相关内容。利用苹果提供的开发工具进行很好的开发工作,包括 Xcode
、Reality Composer Pro
以及其他工具。
二、最佳实践
虽然,UIKit
跟 SwiftUI
都可以支持 visionOS
开发,但是官方还是更推荐使用 SwiftUI
进行开发,并且 SwiftUI
的 Stack
可以支持深度的设置,这样在 visonOS
中可以更好的呈现效果。
(1)使用 Scenes
支持 Scenes
,这个是 iOS 13
推出的。要适配 visonOS
的话,就必须使用 Scenes
,那还是说什么呢,赶快适配起来。
(2)使用 flexible 布局
使用 flexible
布局,而非绝对布局。这样会使你的应用能够更快的适应不同的操作系统。在发布应用前,应当充分测试各种平台和场景,以保证显示的准确性。并且确保布局变化时的动效高效和准确。
(3)采用标准的手势和输入
采用标准的手势和输入,这样系统能够帮我们适配好 visionOS
。尽量减少自定义输入和手势识别器的使用,这可能需要你针对 visionOS
做相应的适配工作。
(4)支持多种与您的内容交互的方式
添加命令菜单支持,以便人们可以使用连接的键盘执行任务。为您的应用程序添加辅助功能支持,以便使用专门设备的人可以与您的内容交互。这些替代交互方式使人们即使在没有触摸或鼠标事件的情况下也能使用您的应用程序。
(5)在使用前检查硬件和功能的可用性
许多框架提供检查功能,以确定当前设备是否支持特定功能。例如,Core Location
可以让您确定设备上可用的位置服务。为了避免在将您的应用程序带到 visionOS
时出现错误,请始终确保当前设备上的功能可用后再使用它们。
(6)使您的应用程序具有包容性
具有可访问性和包容性的应用程序可以改变人们的生活,而 visionOS
提供了支持,以帮助您实现这一目标。国际化和本地化您的应用程序,以支持不同国家、地区和语言的更多人。审查您的应用程序的辅助功能支持,使所有能力的人更容易导航和访问信息。选择包容性的语言和术语,让每个人都感到受欢迎。
(7)避免特定于设备的代码和决策
如果您基于当前设备类型做出决策,您的应用程序可能无法在 visionOS
中正确运行。而不是基于设备形态做出决策,应该根据情境需要做出选择,并提供合理的默认行为。例如,使用系统提供的大小来布置视图,而不是预期的设备大小。
(8)更新调用已弃用API的代码
苹果定期弃用框架和 API
,为现代替代品腾出空间。尽快转向这些现代替代品,以确保您的代码在 visionOS
中平稳运行。
三、探索RealityKit和3D内容
为 visionOS
构建的应用程序可以利用深度和无限画布来创建强大的沉浸式体验。发现您可以如何使用 RealityKit
和其他框架来准备在 visionOS
中构建应用程序。
(1)考虑何时向您的界面添加3D元素
您可以使用 3D
形状和网格增强 visionOS
中的窗口,或在人物周围单独显示这些项目。购物应用程序可以在其主窗口中的产品描述旁显示一个物品的 3D
模型。然后,它可以让人们将该物品从窗口中拖出,以查看它在客厅中的外观。考虑如何将深度融入您的应用程序窗口,并在何时添加体积或沉浸式场景。
(2)探索RealityKit
RealityKit
是苹果的 3D
渲染引擎,用于 visionOS
,现在已与 SwiftUI
深度集成,帮助您构建锐利、响应和立体的界面。3D
内容可以绑定到 SwiftUI
视图和状态上,无缝地将 2D
和 3D
视觉元素相结合。如果您的项目已经有3D内容,请考虑使用 RealityKit
来渲染该内容。
(3)了解更多关于MaterialX着色器的信息
MaterialX
是由领先的电影、视觉效果、娱乐和游戏公司支持的开放标准。了解如何使用 Reality Composer Pro
创建 MaterialX
中的表面和几何着色器。
(4)了解更多关于USDZ的信息
开始探索创建 USDZ
资产的工具和技术,以适用于您的 3D
内容。许多 3D
设计程序现在提供 USDZ
导入和导出,从本月晚些时候开始,您可以使用 Reality Composer Pro
为您的项目构建 USDZ
资产。
四、准备下一级别的音频和视频
开始考虑您需要对应用程序的音频和视频内容进行的更改,以支持 visionOS
:
(1)准备您的应用程序的音轨
即使在您当前的应用程序中,空间音频也为您的内容增加了另一个维度。该音频音轨在 visionOS
中的效果更佳,因为它采用空间音频作为默认播放选项。利用 PHASE
和 AVFAudio
框架构建您的音频内容,并将其定位于您的场景中。
(2)开始为视频资产添加3D支持
通过以 3D
方式捕捉视频并准备资产以进行播放,为 visionOS
中的立体声观看做好准备。QuickTime
文件格式扩展允许您包括多个视频轨道以进行立体声播放,但在需要时可以回退到单眼播放。使用 AVFoundation
播放这些资产,以使播放自动适应当前设备。
(3)考虑替代触觉反馈的方案
如果您的当前应用程序使用触觉反馈提供反馈,请准备在 visionOS
中用声音替换这些触觉反馈。开始构建音频替代品库,或考虑替代类型的反馈。
五、扩展SharePlay体验
共享和协作是 visionOS
的核心部分。就像在 macOS
中一样,人们可以与 FaceTime
通话中的其他人共享任何应用程序窗口。而通过 SharePlay
,下一代共享体验成为可能。
通过识别现在人们可以共享的活动,并使用 Group Activities
框架来实现它们,让您的应用程序为 visionOS
的 SharePlay
做好准备。考虑您可能需要在设备之间传递哪些附加信息,以确保内容保持视觉同步。例如,您可能想要共享窗口的滚动位置以及窗口的内容。头脑风暴一下人们如何在面对面的环境中享受您的应用程序活动,并观看有关设计和构建空间 SharePlay
体验的 WWDC
会议。
六、优先考虑用户隐私
visionOS
非常重视隐私,并帮助人们保护个人信息。在一些必须访问敏感信息的情况下,应用程序必须得到设备佩戴者的授权。
无论您的应用程序是否涉及识别信息、财务数据、位置数据、联系人、内容、购买历史记录、搜索历史记录、诊断或其他信息,请确保遵循隐私的基本原则:
(1)为您收集的任何数据提供实际的好处
当有人同意向您提供个人信息时,请确保您的应用程序能够提供真正的价值作为回报。不要仅仅为了收集个人数据而收集它。将数据用于应用程序本身,并不要用于广告。
(2)清楚地解释您如何使用所收集的信息
透明地使用人们的数据。在请求隐私敏感技术的授权时,提供清晰的使用说明字符串,帮助人们理解为什么您需要这些数据。在应用商店上的应用程序页面上解释数据。
(3)保护您收集的数据
通过加密数据来保护它,以防止在您的应用程序不使用时被访问。如果必须本地存储数据,请在将其写入磁盘之前对其进行加密。
(4)遵循应用商店审核指南和所有适用的法律
有关更多信息,请查看应用商店上的应用程序隐私详情App privacy details on the App Store
有关其他隐私指南,请参阅访问私人数据Accessing private data
七、调整您的应用程序性能。
使性能成为您开发过程的重要部分。现在优化您的应用程序将使它更容易达到您在将其引入 visionOS
时的性能目标。定期收集性能指标,并使用这些指标来识别回归,以防止它们成为更大的问题。
(1)注意您的应用程序执行的工作量
确保您的应用程序执行的工作提供实际的好处。优化算法以最小化您的应用程序对 CPU
和 GPU
资源的消耗。
(2)识别要测试的代码流和场景
构建 XCTest
案例以测量您的应用程序最重要的功能的性能。在不同的系统负载下运行这些测试,以确定您的应用程序的行为。
(3)为您当前的应用程序设置性能和电源目标
为您的应用程序设置激进的性能目标,并使用 Instruments
监控这些目标。确保您的应用程序不会在执行不必要或重复的任务时浪费电力。
(4)采用持续集成(CI)工作流程
设置您的构建在 Xcode Cloud
中运行。通过确保每个提交都维护您的代码库的质量和稳定性来采用CI思维方式。将与性能相关的测试作为测试套件的一部分运行。
八、运行您的iPad和iPhone应用程序
iPadOS
和 iOS
中提供的相同框架也包含在 visionOS
中。这意味着您的 iPad
和 iPhone
应用程序将在 Apple Vision Pro
上运行,每个应用程序都作为一个可扩展的 2D
窗口,具有其原始的外观和感觉。当应用商店可用时,兼容的应用程序将自动可用,无需采取任何措施,为人们在 visionOS
中提供更多选项。本月晚些时候,您可以使用模拟器和 TestFlight
在 Apple Vision Pro
上测试您的应用程序。如果您的应用程序不适合 Apple Vision Pro
,您将能够在 App Store Connect
中编辑其可用性。