SuperAPI AI 工具集

axiom-tvos

编程与开发

查看项目

更新于 10-16 05:27

技能介绍

用途

axiom-tvos 用于指导 tvOS 应用开发,尤其针对从 iOS 移植到 tvOS 的场景。它的核心观点是:tvOS 不是“电视上的 iOS”,应作为独立平台对待。技能指出三个最危险的错误假设:本地文件会持久保存、WebView 存在、焦点机制与 @FocusState 一致。

主要能力

1. 双焦点系统

tvOS 存在两套必须共存的焦点系统:UIKit Focus Engine(负责硬件遥控器导航与方向扫描,API 包括 UIFocusEnvironment、UIFocusSystem、UIFocusGuide)与 SwiftUI Focus(负责程序化焦点绑定与焦点分区,API 包括 @FocusState、.focused()、.focusable()、.focusSection())。用户滑动遥控器时始终由 UIKit Focus Engine 处理;代码设置 @FocusState 时由 SwiftUI 处理,但可能被 Focus Engine 覆盖。若 Focus Engine 认为某视图不可聚焦,@FocusState 的赋值会被静默忽略。技能还介绍了 UIFocusGuide 用于桥接导航间隙,以及常见焦点陷阱(不可聚焦容器、缺少焦点引导、@FocusState 被忽略、未请求焦点更新、非网格布局、UIHostingConfiguration 焦点问题)。

2. Siri Remote 输入

遥控器有两代硬件差异:第一代(2015-2021)为全区域触控板,第二代(2021+)为点击板加外圈触控环。技能覆盖三层输入方式:SwiftUI 标准修饰符(首选,通过焦点系统自动处理)、UIKit 手势识别器(检测特定按键与手势,如 .menu、.playPause、.select、方向键等)、GameController 框架(将遥控器作为 GCMicroGamepad 获取原始输入,用于自定义交互如进度条拖动)。还介绍了低层 UIResponder 按键处理与进度条拖动中的虚拟阻尼。

3. 存储限制

tvOS 没有 Document 目录,所有本地存储都是缓存,系统可随时删除。Application Support 与 Caches 均不持久,系统在应用未运行时可能删除文件。限制包括:应用包最大 4 GB、NSUserDefaults 最大 500 KB、本地缓存无保证大小。推荐模式是以 iCloud 为主、本地仅作缓存。数据库方案中推荐 SQLiteData + CloudKit SyncEngine;SwiftData + CloudKit 可用但脆弱;CoreData + CloudKit 危险;本地 GRDB/SQLite 不可靠;NSUbiquitousKeyValueStore 适合小数据(1 MB);按需资源适合只读资产。

4. 无 WebView

tvOS 没有 WKWebView、SFSafariViewController 或 WebView,Apple HIG 明确表示不支持。替代方案:用 JavaScriptCore(JSContext、JSValue,无 DOM)解析 HTML/JSON;从解析数据原生渲染网页内容;HLS 流媒体可用本地 HTTP 服务器模式;OAuth 登录可用设备代码流(RFC 8628)或伴随设备。

5. TVUIKit 组件

tvOS 专属 UIKit 组件,可通过 UIViewRepresentable 桥接到 SwiftUI,包括 TVPosterView、TVLockupView、TVCardView、TVCaptionButtonView、TVMonogramView、TVCollectionViewFullScreenLayout、TVMediaItemContentView、TVDigitEntryViewController 等。

6. AVPlayer 与移植检查

技能提到 tvOS 需要 .ambient 音频会话、自定义 Menu 按钮处理与缓冲区调优,默认 iOS AVPlayer 设置会导致音频会话冲突与返回导航失效。移植前需检查五个领域:存储、焦点、WebView、文本输入、AVPlayer,这些领域能编译通过但会在运行时失败。

使用方式

该技能以文档形式提供,包含示例提示与代码片段。开发者可在构建新 tvOS 应用、添加 tvOS 目标、移植 iOS 应用、调试焦点/遥控器/存储问题、处理 AVPlayer/TVUIKit/文本输入时参考。

适用场景

新建 tvOS 应用或添加 tvOS 目标;将 iOS 应用移植到 tvOS;调试 tvOS 上的焦点、遥控器输入或存储问题;在 tvOS 上使用 AVPlayer、TVUIKit 或文本输入。

限制

资料未提供该技能的安装命令、收费方式、平台支持范围或效果保证。部分内容(如 tvOS 26 的 Liquid Glass 设计语言)引用了其他技能(axiom-liquid-glass、axiom-sqlitedata、axiom-storage),本技能未展开。