让我们讨论如何通过包含 App_Resources/visionOS
文件夹,将 visionOS
支持添加到任何现有的 NativeScript 应用程序中。
我们可以通过创建一个 visionOS 应用程序来获取最新的 visionOS
资源文件夹。
ns create myapp --vision
这将设置一个预配置的 visionOS 就绪应用程序。
口味无关紧要,因为我们创建应用程序只是为了获取 App_Resources/visionOS
文件夹。
但作为参考,您也可以使用以下任何一个
ns create myapp --vision-ng
ns create myapp --vision-react
ns create myapp --vision-solid
ns create myapp --vision-svelte
ns create myapp --vision-vue
您现在可以将 myapp/App_Resources/visionOS
文件夹移动到您自己的应用程序资源文件夹中。
您现在可以使用以下命令在 Vision Pro 模拟器上运行您的应用程序
ns run visionos --no-hmr
您实际上也可以将 visionOS 与 HMR 一起使用。有关口味注意事项,请参见下文。通常,使用 HMR 时,主要考虑因素是路由通常不会在 HMR 更新后立即保留。有关此方面的说明,请参阅此 视频教程。
您现有的应用程序可能包含使用 CocoaPods 的插件,其中一些可能仍然需要 visionOS 支持。截至本文撰写之时,许多供应商已添加了支持,但如果您遇到构建错误,您可能需要检查您的插件。
您可能希望使用 文档 中提到的特定 visionOS
功能,例如以下功能
TouchManager.enableGlobalHoverWhereTap = true;
TouchManager.visionHoverOptions = {
default: {
effect: 'highlight',
shape: 'rect',
shapeCornerRadius: 16,
},
};
这些 TouchManager
设置无需任何条件处理即可设置,因为它们只有在您的应用程序在 visionOS 上运行时才会启用。
您可能还想使用 visionOS 特定的视图功能,例如来自 @nativescript/swift-ui 的 Model3D
。您可以为您的应用程序注册该元素,并将其包围在 visionos
平台指令过滤器中,以供视图使用。
<visionos>
<Model3D src="file.usdz" />
</visionos>
Model3D
在此 视频教程 中有解释。
平台条件(如果需要)可以通过多种方式处理
if (__IOS__) {
// iOS specific
}
if (__VISIONOS__) {
// visionOS specific
}
if (__APPLE__) {
// both iOS and visionOS
}
在 visionOS 上运行您的应用程序时,您实际上是在将您的应用程序嵌入到 SwiftUI 应用程序生命周期 中,因为 visionOS 是一个一流的 SwiftUI 平台。
在 visionOS 上进行标准开发时,您需要在启动 main.ts
中使用 embedded
标志,如下所示
runNativeScriptAngularApp({
embedded: __VISIONOS__,
appModuleBootstrap: () => platformNativeScript().bootstrapModule(AppModule),
});
注意:如果未为 visionOS 设置此标志,则您的应用程序在使用 "--no-hmr" 标志时将无法启动。
准备好将 Vision Pro 应用程序部署到商店时,可以使用以下命令准备它
ns prepare visionos --release
ns open visionos
这将准备应用程序以供发布,然后您可以使用 ns open visionos
在 Xcode 中打开 visionOS 应用程序,执行“项目”>“存档”以将其上传到 TestFlight。
在 App Store Connect 中,您需要确保已添加 visionOS
作为受支持的平台
上传 visionOS 版本后,您将在 TestFlight>“visionOS 版本”下看到它们开始出现。
我们非常乐意在我们的 社区 Discord 中的 #visionos 频道中了解您的 visionOS 旅程!