Apple TV 编程指南--介绍

1442906881991924.png

本文由CocoaChina译者呆萌院长(博客)翻译自苹果开发者中心

校对:hyhSuper(GitHub

原文:App Programming Guide for tvOS--The New 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遥控器。

QQ截图20151120145104.png

传统的APP

为 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 专有的新框架:

继承 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 宏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android_tv_metro是一款安卓版TV Metro框架和服务器API。API和数据结构专辑和显示项目:Metro风格是由两个元素构成专辑可以包含多张专辑和显示项目显示项目可以被定义为视频,游戏,应用程序,音乐等您可以从显示项目中删除你自己的游戏/应用/视频详细条目主页也被定义为专辑。API风格API描述http://host/v1/ns/type/?id=res_id NS:命名空间,资源类型类型:项目或项目列表ID:后端服务器系统的资源ID详细信息http://host/game(video/app)/item?id=12346 return item list专辑http://host/game(video/app)/album?id=6464 return album类别http://host/game(video/app)/category?id=123456 return album注意:专辑和类别接近同一概念。选项卡“应用程序/游戏”选项卡“视频”选项卡“视频类别”首页JSON定义首页JSON示例服务器API定义请看:https://github.com/XiaoMi/android_tv_metro/raw/master/server/TVMarketAPI.md首页显示数据{    "data": [        {            "items": [display items],            "images": {},            "name": "TAB 1",            "id": "recommend",            "type": "album",            "ns": "video"        },        {            "items": [display item],            "images": {},            "name": "TAB 2",            "id": "recommend",            "type": "album",            "ns": "video"        }    ] }显示项目:{    "target": {        "type": "item"    },    "images": {        "back": {            "url": "",            "ani": {},            "pos": {}        }    },    "name": "Display Name)",    "times": {        "updated": 1409202939,        "created": 1409202939    },    "_ui": {        "layout": {            "y": 2,            "x": 3,            "w": 1,            "h": 1        },        "type": "metro_cell_banner"    },    "id": "987722",    "type": "item",    "ns": "video" }专辑{ "data": [     {         "items": [display items],         "images": { },         "name":"game tab name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "recommend",         "type": "album",         "ns": "game"     },     {         "items": [display items],         "images": { },         "name": "game tab Name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "categories",         "type": "album",         "ns": "game"     },     {         "items": [dispay items],         "images": { },         "name": "video tab name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "recommend",         "type": "album",         "ns": "video"     },     {         "items": [display items],         "images": { },         "name": "video tab name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "categories",         "type": "album",         "ns": "video"     } ], "preload": {     "images": [] }, "update_time": 0 }显示项目{ "target": {     "type": "item" }, "images": {     "text": {         "url": "",         "ani": {},         "pos": {}     },     "icon": {         "url": "",         "ani": {},         "pos": {}     },     "back": {         "url": "http://xxx/fffff.png",         "ani": {},         "pos": {}     },     "spirit": {         "url": "",         "ani": {},         "pos": {}     } }, "name": "name", "times": {     "updated": 1404466152,     "created": 1404454443 }, "_ui": {     "type": "metro_cell_banner",     "layout": {         "y": 1,         "x": 1,         "w": 1,         "h": 2     } }, "id": "180", "type": "item", "ns": "game" }TV Metro库和APIandroid库:提供一个建立sw540dp metro布局的框架。API:服务器API和数据结构。该框架能够帮助您轻松构建一个TV metro UI风格的应用程序。至于具体的业务数据定义,你需要自己处理。android库:用于专辑的RecommendCardView Card浏览GenericSubjectLoader Loader(选项卡是专辑的一个实例)如何集成Android库?你只需要继承MainActivity并执行选项卡装载。请参阅TVMetroSample应用如何运行自己的服务器?1.定义你的主页数据2.执行您的详细资料/列表API下载测试APK下载测试APK,你可以在Android平板或电视运行点击下载设计文档:https://github.com/XiaoMi/android_tv_metro/raw/master/design/app_api.ppt 标签:Android

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值