规划你的 Apple tvOS App

如果你刚接触 Apple TV 软件开发,请花些时间来熟悉将要用到的工具和技术。Apple 提供了你入门所需的工具,而 Apple tvOS 则带来了你期待的技术和功能以及你需要的性能。

含有 macOS App 新创意和技术的故事板。

    探索无限可能

    提供用户可在沙发上欣赏的内容,拥抱 Apple TV 营造的客厅体验。在线播放最新的娱乐、体育或新闻内容。提供卓越的游戏或教育体验,或借助健身 App 提供私人训练课程。以高质量格式交付你的内容,如 4K 视频、杜比视界、杜比全景声和 HDR10。设计 App 的界面,支持利用 Apple TV Remote 来轻松浏览。

    Apple tvOS 提供了不同的路径供你交付内容,而最初选择的路径将会影响你随后要做的决定:

    用标准视图合成 UI

    如果你的内容在不同版本之间没有显著变化,请利用 Apple tvOS 中的按钮、文本标签以及其他标准视图和控件构建你的 UI。自定控件的外观或创建全新的视图,以独特的方式展示你的内容。你的 UI 会保留在 Apple TV 本地,并将从本地或网络获取的数据填充到界面中。

    将 UI 和内容储存到你的服务器上

    从储存在你服务器上的 XML 模板、JavaScript 代码和其他内容动态构建你的 UI。如果你经常更新 App 的内容,这将尤其有用。例如,在每周更新当前影片排行的媒体 App 中,你就可以采取这种方式。你的 App 在运行时下载内容,并合成你的界面。

    亲自绘制屏幕上的一切

    全面掌控你 App 的外观,亲自绘制屏幕上显示的一切。使用自定 2D 或 3D 环境,创建游戏或沉浸式体验。利用 Metal 等技术,以高帧率渲染你的内容并制作动画。

    在为 App 选定了大方向后,请进一步思考你可能需要的其他功能。除了一些核心技术外,你还可以根据需要采用许多技术来支持特定的功能。Apple 提供各种技术来管理和播放媒体、创建和保护数据、连接外置硬件,以及与 Siri 等系统服务集成,等等。

    从何处着手

    软件开发从 Xcode 开始,这是 Apple 的集成式开发环境。Xcode 提供一套齐全的软件开发工具,包括项目管理器、代码编辑器、可视化 UI 编辑器、调试工具、面向不同设备的模拟器,以及用于评估性能的工具,等等。Xcode 还包含一整套系统代码模块 (称为框架),以辅助你开发软件。

    从 App Store 下载 Xcode

    Xcode 包含适用于 iOS、iPadOS、macOS、Apple tvOS 和 watchOS 的 SDK。

    要在 Xcode 中创建新项目,请选取“File”(文件) >“New”(新建) >“Project”(项目),然后按提示操作来创建 Apple tvOS App。新项目包含一些默认代码来帮助你轻松入门,你选择的 App 类型决定了你将采取的开发路径。例如,如果你的 App 从自己公司的服务器下载其 UI,请选择 TVML App。如需有关如何使用 Xcode 的信息,请查看 Xcode 文档

    采用 Swift

    在设置项目时,请考虑你要使用哪一种编程语言。我们推荐 Swift,因为其语法非常简洁,从设计上保证安全,而且还有让代码更富表现力的现代特性。此外,Swift 代码能够生成运行速度飞快的软件,并可与 Objective-C 互操作,因此你可以在同一项目中同时包含这两种语言的源代码文件。

    《Swift 编程语言指南》

    《Swift 编程语言指南》 全面概述了 Swift 编程语言,是你 Swift 学习之旅的理想起点。

    挑选 App 构建器技术

    你还应在早期做出另一个选择,即你准备将哪一种 App 构建器技术用于你的界面。App 构建器技术提供了基础代码,供你用于合成界面、处理事件并与系统交互。每项 App 构建器技术支持至少一个开发路径,其中一些还支持多个路径。

    你可从以下 App 构建器技术中挑选:

    SwiftUI

    SwiftUI 是首选的 App 构建器技术,因为它为构建 UI 和 App 基础架构提供了一种与平台无关的现代方法。通过使用 SwiftUI,你能够以编程方式指定界面,并让系统动态显示和更新这个界面,在 Xcode 编辑器内也一样如此。如需有关使用 SwiftUI 的引导式演示,请查看“SwiftUI 简介”教程

    TVML 和 TVMLKit

    TVML 和 TVMLKit 提供一种客户端加服务器模型来构建 App 的 UI。使用 TV 标记语言 (TVML),将你的 UI 定义为一组 XML 模板页面。将这些页面和你用来创建 UI 的 JavaScript 代码储存到你的服务器上,并在运行时下载到你的 App 中。使用 TVMLKit 在屏幕上渲染这些页面,并使用 SwiftUIUIKit 来实现 App 的其余基础架构。如需有关使用 TVML、TVMLKit 和 UIKit 创建客户端加服务器型 App 的示例,请查看“利用 TVMLKit 实现混合型 TV App”

    TVUIKit 和 UIKit

    TVUIKit 和 UIKit 提供一个对象库,供你用于构建 App 的 UI 和基础架构。利用 Storyboard 以可视化方式或在代码中以编程方式,合成你在屏幕上显示的视图以及不同视图集合之间的导航。TVUIKit 提供了 Apple tvOS 专用视图,而 UIKit 则提供了按钮和标签等通用视图,以及 App 的其余基础架构。如需更多信息,请查看“利用全屏布局打造引人入胜的体验”

    SwiftUI 是构建 App 核心基础架构和 UI 的首选技术。所有 App 都在一定程度使用 SwiftUI 或 UIKit,但 SwiftUI 的现代化方法可以生成更易维护的代码。使用 SwiftUI 也不会妨碍你使用 UIKit 代码。你可以在同一视图层次结构中轻松地混合使用 SwiftUI 视图和 UIKit 视图。

    SwiftUI 和 UIKit 可与 Apple 的数据管理技术无缝协作,为你的界面创建提供助力。Swift 标准资料库Foundation 框架 提供了你构建 App 需要的基本类型,如数组和字典、字符串、数字、日期和其他常见的数据值类型。对于你定义的任何自定类型,可以采用 Swift 的 Codable 支持 将这些类型持久保留在磁盘上。如果你的 App 管理大量的结构化数据,请考虑使用 Core DataCloudKit 来管理和持久保留这些数据。

    设计用户体验

    App 通过提供引人入胜的体验来留住用户。你创建的 UI 需要外观精美、布局易于理解,并且始终凸显恰当的内容。

    《人机界面指南》

    Apple 的《人机界面指南》 提供了宝贵的信息,指导你设计 App 界面、导航内容,以及管理 Apple TV 上的交互。在探索 Apple tvOS 生态系统时,务必重视并仔细阅读这些指南,使用相应的 Apple 设计资源来深入设计你的 App。

    有一些功能和技术是 Apple tvOS App 所不可或缺的。在规划你的初始 UI 时,请务必考虑以下功能:

    深色模式

    借助这项系统范围设置,用户可以为 Apple TV 选取浅色或深色界面。深色和浅色界面依赖于不同的调色盘和图像素材,你可以借助素材目录来管理它们。对于 UI 其余部分,请使用系统 API 来判断何时需要在浅色和深色内容之间切换。如需详细信息,请查看“在你的界面中支持深色模式”

    场景

    场景是你用于管理 App 界面的必要基础架构组成部分。场景可以协调 UI 与 App 其余部分之间的交互。场景也可响应对 UI 产生影响的通知,例如前台和后台执行之间的过渡。请确保在你的所有 App 中支持场景。如需相关信息,请查看 SwiftUIUIKit

    自动布局

    与其手动调整视图位置来适配不同的电视机尺寸、宽高比和分辨率,不如告诉系统如何相对于当前安全区域 进行这些调整。SwiftUI 和 TVML 采用自动布局,作为其 UI 设计方法的一部分。要在 UIKit 视图中采用自动布局,请为你的界面添加自动布局约束

    可缩放图像

    融合 SF Symbols,让你的 App 更自如地适应更改。SF Symbols App 提供一个由可配置的矢量图像组成的庞大集合,这些图像能够自然地适应外观和尺寸变化。它们也能与 San Francisco 系统字体完美搭配,在不同 Apple 平台上形成统一的外观。请查看“在你的 UI 中配置和显示符号图像”

    在设计界面时考虑基于焦点的导航。与你 App 的大多数交互是通过 Apple TV Remote 来进行的。用户使用 Remote 上的方向键,将焦点从 UI 的一个部分切换到另一部分上。然后,他们使用选择键来操作聚焦的项目,或使用菜单键返回到上一屏幕。使导航尽可能简单明了,最大程度减少文本输入和其他复杂交互。

    组合是简化导航的一种方式,而且也能提高 UI 中类似项目之间的一致性。组合是一组相关的视图,你可以将它们合并为一个可选择的元素。例如,一个影片组合可以包含这部影片的标题、描述、演员表和海报图像。当用户选择了某一部影片时,Apple tvOS 会将焦点置于整个组合上,而不是个别项目上。如需更多信息,请查看“组合”

    支持高质量媒体播放

    Apple TV 在客厅中的位置使它成为以媒体为中心的 App 的理想处所。Apple 的音视频技术让你能够利用广泛的媒体格式,并获得以最高质量进行播放所需要的工具。

    播放和管理媒体

    AVKit 提供了你播放和管理 App 的音视频内容所需的一切。视频播放采用标准系统接口,其提供了内建的传输控件,而且支持隔空播放、画中画 (PiP) 和插播内容等功能。如需更精细地控制你的内容,请使用 AVFoundation

    播放高质量空间音频

    利用 AVFAudio 创建一流的音乐播放器,其包含了 AVFoundation 框架中的音频相关类型。利用 PHASE 让你的音频提升到另一维度,它支持在你的游戏和 App 中创造复杂的动态空间音频体验。

    流媒体播放直播或录制内容

    了解如何利用 HTTP Live Streaming 创建流媒体内容并部署到你的服务器上。利用 AVFoundation 播放来自你的 App 的流媒体内容。

    在开发期间采用最佳做法

    采取以下做法,为每个用户提供最佳体验:

    保护用户的隐私

    隐私非常重要,因此请告知用户你将如何使用他们的数据。如果你收集数据,请提供隐私声明来阐述你将如何使用这些信息。如果你使用会操作个人数据的 Apple 技术,请附上使用说明,以便系统在首次使用时显示。如需更多信息,请查看“保护用户的隐私”

    保护你收集和储存的数据

    如果你确实要收集数据,请务必保护这些数据免受恶意攻击。将密码、财务数据或个人身份信息等非常敏感的数据储存在用户的加密钥匙串 中。使用磁盘加密 或其他 Apple 安全技术 来储存其他个人数据。使用 Apple CryptoKit 对你储存在本地或发送到 App 外的数据进行加密。

    审查你的辅助功能支持

    Apple 已将辅助功能支持直接内置于其各项技术中,但屏幕阅读器和其他辅助功能仍需依赖你的 App 提供的信息。SwiftUI 和 UIKit 可以描述 UI 的每一部分,但只有你知道这些部分是如何在一起协同工作的。检查辅助功能标签和其他描述,确保它们提供了实用的信息,并确保基于焦点的导航简约且直观。如需更多信息,请查看“辅助功能”

    打造国际化和本地化的 App

    针对其他地区和语言进行本地化,将你的 App 推广到国际市场。利用 Foundation 框架 准备你的 App,它可根据不同语言和地区对字符串、日期、时间、货币和数字进行格式调整。确保你的 UI 对从左到右和从右到左 的语言都有良好呈现。将 App 资源本地化,并将它们添加到你的 Xcode 项目中。如需有关国际化和本地化流程的信息,请查看“本地化”

    为每个人而设计

    在开发内容时考虑社会和文化方面的差异,避免使用对你的部分受众隐含负面或贬损意义的图像和词语。如需更多信息,请查看“包容性”

    全面测试和调试 App

    在开发环节,使用内建 Xcode 调试器在出现问题时进行调试。使用 XCTest 构建自动化测试套件并在每次构建时运行,以验证新代码的运行是否与预期相符。使用 Xcode Cloud 的持续集成系统,实现自动构建你的 App、自动完成测试循环及向 QA 团队自动分发。

    优化你的 App 性能

    利用 Xcode 附带的 Instruments App,消除代码中的瓶颈和其他性能问题。对运行代码进行性能测试,查找内存泄漏,分析资源使用,以及进行更多其他检查。如需有关使用 Instruments 收集指标的信息,请查看“提升 App 的性能”

    为 App 选择商业模式

    通过各种商业模式在全球范围内分发你的 App,包括免费、免费但提供 App 内购买项目、付费下载等。你所构建的界面应能提供一致性的体验,并支持你所选择的商业模式。如需更多信息,请查看“为 App 选择商业模式”

    如何更进一步

    当你的 App 准备就绪并能正常运行时,请探索更多方法来进一步完善用户体验。小小改变也能带来大不同 — 哪怕只是加入一个特定功能,或者换一种方式呈现你的内容。例如:

    简化 App 的登录过程

    采用系统登录界面,允许用户使用关联了同一 Apple ID 的 iPhone 或 iPad 来登录你的 Apple tvOS App。通过采用多用户支持 来简化选择 App 相关用户个人资料的过程,让用户更快看到他们的内容。

    允许用户从其他设备连接

    允许用户从 iPhone、iPad 或 Apple Watch 与你的 Apple tvOS App 交互。利用 DeviceDiscoveryUI 在运行你的 App 的两台设备之间创建安全网络连接,并使用这个连接来交换数据。例如,你可以允许用户使用 iPhone 上的触控输入来控制你的 Apple tvOS App。

    在 Top Shelf 中展示你的内容

    Apple TV 主屏幕中,App 的顶行可以在紧邻其上方的横幅区域中显示更多内容。利用 Top Shelf App 扩展将这些内容提供给系统,它是你可以包含到 App 中的独立可执行文件。利用你的扩展来突出显示新鲜或精选内容,或者显示用户收藏的节目。如需有关如何创建这一扩展的信息,请查看“TV 服务”

    允许用户利用“同播共享”来共享活动

    “同播共享”可邀请用户通过 FaceTime 通话来共享你 App 的活动。通过这一功能,在你的流媒体视频 App 中实现观影之夜,或将比赛之夜转变为可供观赏的体育赛事。定义你想要通过 Group Activities 共享的活动。利用 AVFoundation 同步媒体播放。

    采集实时音视频进行广播

    分享内容还有一种方式,即采集实时音视频并储存为录像/录音或进行现场直播。为游戏或其他 App 添加这一支持,方便用户通过电子邮件、信息或社交媒体分享他们的体验。如需更多信息,请查看 ReplayKit

    围绕新功能添加运行时条件检查

    当你更新 App 以支持 Apple tvOS 新版本时,请在面向新功能的代码附近添加运行时条件检查。运行时检查可以消除发布 App 不同版本的必要:一个版本面向运行 Apple tvOS 新版本的用户,另一个面向运行旧版本的用户。所有人都运行相同的 App,并且运行 Apple tvOS 新版本的用户可以用上你增加的新功能。如需有关添加运行时检查的信息,请查看“在特定平台或操作系统版本上运行代码”

    通过其他方式协助用户与你的 App 轻松交互:

    简化查找相关内容的过程

    思考用户会如何使用你的 App,想办法快速呈现重要的内容。使用日期与时间信息来突出显示新的或当前的内容。使用机器学习分析数据,提供更优秀的解决方案。动态调整你的界面布局,让常用内容更加便于访问。

    支持 App 内容的通用链接

    如果你的网站和 App 提供类似的内容,请给你的 App 添加通用链接支持。借助通用链接,你不必为打开 App 中的内容而创建单独的 URL。只需一个 URL,就能打开你的 App (若已安装) 或你的网站 (若未安装 App)。如需更多信息,请查看“允许 App 和网站链接你的内容”

    探索更多

    进一步了解各种技术,它们不仅带来独特的功能,还可与不同 Apple 平台紧密集成,形成一个无缝的生态系统来帮助 App 和游戏跨平台运行,包括 iOSiPadOSmacOS、Apple tvOS、visionOSwatchOS

    分发你的 App

    当你准备好分发 App 时,可以通过 App Store 将你的 App 提供给世界各地数以亿计的用户。了解将 App 提交到 App Store 的准备工作。

    了解 App 提交