本文由CocoaChina译者呆萌院长( 博客 )翻译自 苹果开发者中心
校对: hyhSuper( GitHub )
原文: App Programming Guide for tvOS--The New Apple TV
本文档文章包括
Apple TV 编程指南:介绍
Apple TV 编程指南:创建Client-Server App
Apple TV 编程指南:使用Apple TV遥控器控制屏幕上的用户界面
Apple TV 编程指南:检测手势和按钮按压
Apple TV 编程指南:设计键盘输入体验
Apple TV 编程指南:使用游戏控制器
Apple TV 编程指南:创造视差美术资源
Apple TV 编程指南:资源管理
重要:这是针对于正在开发中的API或技术的预备文档(预发布版本)。苹果提供这份文档的目的是帮助你按照文中描述的方式对技术的选择及界面的设计开发进行规划。这些信息有可能发生变化,因此根据本文档的软件开发应当基于最终版本的操作系统和文档进行测试。该文档的新版本或许会随着API或相关技术未来的发展而进行更新。
新的 Apple TV 不仅仅是一个被动的媒体播放器。Apple TV 的用户还可以玩游戏,使用工具类应用程序,看电影,享受并分享经验。这些功能的增加也给开发商提供了更多机会。
tv OS 开发由 iOS 开发衍生而来但又有所不同,包括 tv OS 特有的一些框架。你会发现 Apple TV 的开发跟 iOS 开发很相似,它结合了支持分享技术、多用户体验,并且开辟了你在 iOS 设备上没有发现的app开发领域的空间。你可以创建新的APP也可以使用 iOS 代码作为起点。无论是哪种开发,你使用的都是熟悉的工具(Xcode)、语言(Objective-C,Swift以及JavaScript)。本文档介绍了 Apple TV 的独特功能,并提供了帮你开始 tv OS app 开发之旅的深入指导信息。
当移植现有的项目时,你可以在 Xcode 工程中增加一个 target 以简化资源共享,但是你需要为 tv OS 创建新的 storyboards。你可能会需要了解用户如何浏览你的APP,然后让APP用户界面适用于 Apple TV。想要了解更多信息,请查看Apple TV Human Interface Guidelines(中文版/ 英文版 )
创建Apple TV的配置文件与iOS创建的配置文件方法是一样的,即在Xcode中使用Fix Issue命令或者通过开发者中心网站来创建配置文件。更多关于 Apple TV 功能支持信息,请参看 Supported Capabilities .
虽然 iOS 和 tv OS APP 是不同的实体(也就是说没有一个可以在两个平台上运行的二进制文件),但你可以创建一个绑定这些应用程序的通用购买。用户一次购买应用程序,但可以同时获得应用的 iOS 和 tv OS 版本。更多信息,请查看 App Distribution Guide 。
AppleTV硬件
新的AppleTV有以下硬件规格:
64-bit A8 处理器
32 GB/64 GB 存储空间
2 GB RAM
10/100 Mbps Ethernet
WiFi 802.11a/b/g/n/ac
1080p 分辨率
HDMI
全新Siri 遥控器/Apple TV 遥控器
新Apple TV遥控器有两种控制方式:一种使用Siri,另一种是在屏幕上搜索。Siri搜索适用于以下国家:
澳大利亚
加拿大
法国
德国
日本
西班牙
英国
美国
图1-1展示的是新遥控器,它有以下按钮:
1. 触摸界面。滑动浏览。按下选择。长按展示详情菜单。
2.菜单。按下返回上个菜单。
3. Siri/搜索。长按与之进行对话(编辑注:适用于上边列出的国家)。在其他国家,按下该按钮则打开屏幕搜索应用程序。
4. 播放/暂停。播放和暂停媒体。
5.Home按钮。按下返回主屏幕。按两次查看打开应用程序。长按休眠。
6. 音量。控制TV音量。
7.Lightning接口。插入充电。
下图是Siri遥控器和
Apple TV
遥控器。
为 Apple TV 开发应用程序类似于 iOS APP 开发。你可以用 iOS 开发中相同的技术和框架来开发游戏、实用应用程序、媒体应用程序以及其他类型的应用。全新的以及现有的APP可以同时部署到 iOS 和新 Apple TV 平台。
Client-Server Apps(简写为 C-S APP)
为Apple TV创建Client-Server APP(简写为 C-S APP)非常简单,它的主要目的是使用HTTPS、XMLHTTPRequest、DOM 以及 JavaScript 技术传输流媒体。你可以使用苹果的自定义标记语言--TVML 创建接口,并使用JavaScript指定 APP 的行为。TVMLKit框架在原生代码和 JavaScript 代码之间搭建了桥梁。
你可以在 JavaScript 文件中指定APP的初次启动行为。向往常一样创建你的二进制APP,再使用TVMLKit框架来加载 JavaScript 文件。JavaScript 文件加载 TVML页面并在屏幕上展示。你可以使用苹果提供的模板创建TVML页面。每个模板都提供了独一无二的全屏信息展示。你可以通过添加或者移除模板中的元素来调整页面。关于苹果提供的TVML模板和元素列表,请查看 Apple TV Markup Language Reference 。
Apple TV上所有的视频回放都基于 HTTP Live Streaming 和 FairPlay Streaming。请查看 HTTP Live Streaming 和 FairPlay Streaming Overview。关于HTTP Live Streaming 编写规范,请查阅 HLS Authoring Specification for Apple TV 。
Top Shelf
用户可以将任何 Apple TV app放在 App菜单的顶行,最多能放5个 icon。用户在顶行选中某个 icon 时,屏幕顶部会展示与该 APP 相关的内容,这个区域被称为 Top Shelf。在这个区域展示 APP 的内容,可以让用户预览他们关心的内容,或者让他们直接跳转至 APP 的特定部分。
焦点和视差图片
当用户停留在某个项目上但却没有选择该项目时,某个UI元素就处于聚焦状态。当用户聚焦到一个分层图片上时,图片会响应用户在遥控器玻璃材质触控板上的触摸。
每层图片以稍有不同的速度旋转以产生视察效果。这种精细的效果为用户创造了视觉上的深度,更现实也更有活力,并强调被聚焦的图片正是用户想要的。
视差图片由设计师完成。但是如何将其应用在你的APP中呢?改进后的 UIImageView 可以支持视差图片,所以大多数情况下你只需做很小的编码调整。根据是要将图片直接添加到APP,还是在运行时从服务器加载,你的工作也会有所变化。
新的 tvOS 框架
Apple tvOS 引入了 tvOS 专有的新框架:
TVMLJS:描述了用于加载 TVML 页面(在C-S APP中展示信息)的JavaScript API。详见 TVJS Framework Reference .
TVMLKit:提供了将 JavaScript 和 TVML 元素包含进你的 APP 的方法。详见 TVMLKit Framework Reference .
TVServices:描述如何为 APP 添加一个 top shelf 扩展。详见 TVServices Framework Reference .
继承 iOS 框架
Apple tvOS 继承了 iOS 的一些框架。详见 iOS 框架和 tvOS 框架之间一些小差异。
Accelerate
AudioToolbox
AudioUnit
AVFoundation
AVKit
CFNetwork
CloudKit
CoreBluetooth
CoreData
CoreFoundation
CoreGraphics
CoreImage
CoreLocation
CoreMedia
CoreSpotlight
CoreText
CoreVideo
Darwin
Foundation
GameController
GameKit
GameplayKit
GLKit
ImageIO
MachO
MediaAccessibility
MediaPlayer
MediaToolbox
Metal
MetalKit
MetalPerformanceShaders
MobileCoreServices
ModelIO
OpenGLES
SceneKit
Security
simd
SpriteKit
StoreKit
Swift Standard Library
SystemConfiguration
UIKit
新用户界面挑战
Apple TV 没有鼠标来让用户直接选择 APP 或者与之进行交互,也不能触摸和使用手势。相反,Apple TV 使用了 Siri Remote 或者游戏控制器在屏幕上进行移动。
除了新控制器,整个用户体验也是完全不同。Mac 和 iOS 设备通常是单人体验。用户可能在你的 APP 中进行其他交互操作,但用户依然是一个人使用设备。对于新Apple TV,用户体验变得更加社交化。可能会有几个人坐在沙发上与你的 APP 进行交互。对于一款优秀的 APP 来说,利用这些变化是至关重要的。
APP本地储存有限
Apple TV app 最大容量为 200MB。此外,你的 APP 最多可使用该设备本地 500KB 的永久存储(使用 NSUserDefaults 类)。
除了有限的本地存储,在空间不够的情况下,其他所有数据必须可由操作系统清除。对于这些资源的管理,你有以下几个选择:
你的 APP 可以在iCloud服务中存储和检索用户数据。
你的 APP 将所需数据下载到它的缓存目录中。当 APP 运行时下载的数据不会被删除。不过,当空间不足并且你的 APP 没有运行时,这些数据可能会被删除。不要使用整个缓存空间,这样会导致不可预知的后果。
你的 APP 可以使用 on-demand resources 打包只读资产。在运行时,APP 会根据需要请求资源,并且操作系统会自动下载和管理这些资源。知道如何以及何时加载新资产而又保持用户的参与非常关键。关于 on-demand resources 的更多信息,请参看 On-Demand Resources Guide 。
这意味着为新 Apple TV 开发的每款应用程序都必须能在 iCloud 储存和检索数据,以提供良好的用户体验。
以 Apple TV 作为目标平台
当你需要编写仅适用于 tvOS 的代码时,可使用 #define TARGET_OS_TV 1 宏。