返回博客首页
← 所有帖子

如何在现有应用程序中添加 visionOS?

2024 年 6 月 19 日 — 作者 技术指导委员会 (TSC)

让我们讨论如何通过包含 App_Resources/visionOS 文件夹,将 visionOS 支持添加到任何现有的 NativeScript 应用程序中。

创建 visionOS 应用程序

我们可以通过创建一个 visionOS 应用程序来获取最新的 visionOS 资源文件夹。

ns create myapp --vision

这将设置一个预配置的 visionOS 就绪应用程序。

口味无关紧要,因为我们创建应用程序只是为了获取 App_Resources/visionOS 文件夹。

但作为参考,您也可以使用以下任何一个

  • Angular: ns create myapp --vision-ng
  • React: ns create myapp --vision-react
  • Solid: ns create myapp --vision-solid
  • Svelte: ns create myapp --vision-svelte
  • Vue (3.x): ns create myapp --vision-vue

将 visionOS 文件夹移到适当的位置

您现在可以将 myapp/App_Resources/visionOS 文件夹移动到您自己的应用程序资源文件夹中。

How to add visionOS to an existing app

在 Vision Pro 模拟器上运行您的应用程序

您现在可以使用以下命令在 Vision Pro 模拟器上运行您的应用程序

ns run visionos --no-hmr

您实际上也可以将 visionOS 与 HMR 一起使用。有关口味注意事项,请参见下文。通常,使用 HMR 时,主要考虑因素是路由通常不会在 HMR 更新后立即保留。有关此方面的说明,请参阅此 视频教程

visionOS 的注意事项

您现有的应用程序可能包含使用 CocoaPods 的插件,其中一些可能仍然需要 visionOS 支持。截至本文撰写之时,许多供应商已添加了支持,但如果您遇到构建错误,您可能需要检查您的插件。

TouchManager

您可能希望使用 文档 中提到的特定 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
}

Angular 注意事项

在 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 作为受支持的平台

Add visionOS platform to an existing app store configuration

上传 visionOS 版本后,您将在 TestFlight>“visionOS 版本”下看到它们开始出现。

visionOS builds for TestFlight

在 Discord 上分享您的 visionOS 旅程

我们非常乐意在我们的 社区 Discord 中的 #visionos 频道中了解您的 visionOS 旅程!