说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一个iOS开发者对tvOS SDK的初探

HTML文档下载 WORD文档下载 PDF文档下载
tvOS是Apple TV上一种新的OS系统,它允许开发者构建游戏类和效率类应用。本文作者在其发布之后立即展开深入研究,努力准备一些有价值的tvOS教程,在此,他从一个iOS开发者的视角分享了自己对tvOS的初步印象。

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送邮件至tangxy#csdn.net(请把#改成@)。 


在Walter Isaacson编写的《Steve Jobs》的最后一章中,Steve说过“我最终实现并让它拥有了你们能想象到的最简单的用户界面”。当时他指的就是Apple TV。

Steve不幸离世已经过去很久了,但是人们一直翘首以盼着这款产品。就在昨天2015年9月9日,超过四个春秋的期盼,我们终于等来了这个礼物,虽然可能与Steve对这款产品的愿景和理想有所差距,但是革命的步伐已经坚实的迈出了第一步。

作为一名iOS开发者,昨天的产品发布会让我心潮澎湃,因为Apple宣布,新的Apple TV集成了App Store,这就意味着我们可以为它开发专有的应用,并且会让我们重新认知已了解的iOS知识,以及会开启更多新的展现想法、创意的机会。

我和其他教程团队的成员已经开始深入研究tvOS SDK,并且正在努力准备一些有价值的tvOS教程(通宵达旦!),在此同时,我想从一个iOS开发者的视角与大家分享我对tvOS的初步印象。

让我们一探究竟吧!

基本概念

老款的Apple TV其实类似一个机顶盒,主要提供的功能是让用户通过及其简单的操作界面导航或浏览视频内容。昨天发布的新Apple TV在此基础上进一步的扩充功能,使一些成熟的应用能在Apple TV中运行,比如购物应用,甚至是游戏。

tvOS-1

让我们来看看以下这些信息:

  • 硬件规格: 值得一说规格是64位 A8处理器,32G或64G的存储空间,2G的内存,1080p的分辨率以及支持HDMI,Siri远程遥控,新的Apple TV遥控器。
  • 价格: 新Apple TV的定价为32G 149美元,64G 199美元。这样的定价出乎大多人的以外,原以为新Apple TV的价格会更高一些。
  • 发售时间: Apple在发布会上给出了一个非常模糊和不确定的发售时间“十月下旬”,但是Apple在发布会之后就立即向开发者们提供了tvOS SDK。现在离正式发售已时日不多,如果大家有针对新Apple TV好的想法,我建议你们要抓紧时间了。
  • 开发硬件: Apple已经宣布了一个开发者计划允许已经注册的开发者们请求 Apple TV Developer Kit。该计划可以让开发者们提前对Apple TV进行开发测试。这看起来似乎是一件很美好的事,但是如果你真的要加入该开发者计划,那么仔细看看下面的建议:
注意: 众所周知,iOS、OSX的开发者计划都是收费的,tvOS的开发者计划应该也不例外,不过之前对于该计划的收费信息是非常含糊不清的,但是现在我们通过Apple员工在开发者论坛上发的帖子中确认了该计划只需要话费1美元即可加入。如果大家有意为tvOS贡献一份力量,或者需要编写教程材料的话,强烈建议你们加入该开发计划。

开发 tvOS 应用

啰嗦完一堆后,显然最重要的事就是怎样为新Apple TV开发应用,这应该也是大家最感兴趣的事!

为新Apple TV开发应用实际就是在为tvOS开发应用,当然tvOS这个名字是由Apple根据不同设备而创造的。tvOS仍然是基于iOS开发的,所以有很多框架大家都应该非常熟悉了。

如果要为tvOS开发应用,大家必须要从开发者中心下载Xcode7.1进行开发。该版本是Xcode新的beta版,目前只有该版本支持tvOS以及提供tvOS的模拟器。如果你有需要的话,也可同时下载Xcode7 GM版本,他们可以共存于你们的电脑中。

Apple提供了两种在tvOS上开发应用的方法:

  1. TVML Apps: 这类应用是使用完整的新开发技术开发的,比如TVML、TVJS、TVMLKit。这对我们来说是一个巨大的惊喜,我们会在之后有较详细的介绍。
  2. Custom Apps: 这类应用是使用我们已经比较熟悉的开发技术进行开发的,比如大家熟知的一些iOS框架,Storyboard、UIKit、Auto Layout等。

当你们在为Apple TV开发应用时,你们会发现Xcode中会出现单独的程序目标(这意味着用户将会单独购买的形式购买tvOS应用)。虽然Apple在发布会上说Apple TV中的应用支持通用购买模式,也就是针对iOS和tvOS都支持的应用,用户只需要购买一次即可同时在iPhone和Apple TV上使用。但是从目前的情况来看,我们还不确定Apple是如何实现的,或许在Itunes Connect中支持连接两个程序目标的功能即将来临?

TVML Apps

先前我提过,为tvOS开发应用有两种方式,第一种就是通过TVML、TVJS和TVMLKit技术。如果这些缩写对于你们来说非常陌生,那么不要着急,这就告诉你们他们都是什么:

  • TVML是一种基于“Television Markup Language”的XML格式。
  • TVJS是基于JavaScript APIs的脚本语言,它可以根据TVML中定义的内容展示应用。
  • TVMLKit是连接TVML、TVJS和原生tvOS应用的工具包。

如果你是一名经常使用原生APIs开发原生iOS应用的开发者,那么看到这些类似前端的技术可能会有点退缩。但希望你能保持一颗学习的心,学习了解这些新的强大的特性。

我在这列举一个非常典型的Apple TV的应用场景。大家可以想象一下:你们想把一些内容或信息展现给用户,这些内容和信息储存在你们的服务器上,并且这些内容的格式、查询方式都服务于iPhone或iPad中的应用,那么你肯定会希望你的tvOS中的应用也能方便的使用这些内容,并做到与iOS中应用有相似的展现、查询、导航方式。

tvOS-2

如果我列举的这个例子正好是你们tvOS应用的需求,那么你可能需要考虑如何使用TVMLKit工具包。Apple已经为我们开发者完成了一些主要的工作,比如提供了许多可重用的tvOS界面展示模板,这些模板大都与iOS应用的界面神似,所以用户们并不会感到陌生,这些模板大概有18种之多。大多数模板都可以让你创建出脱凡的、非常适合家中电视展示的界面。大家可以访问Apple的 文档查看这些我们强烈推荐使用的模板。

tvOS-3

我也推荐大家在tvOS模拟器运行TVML Catalog sample app去查看每个模板。同时你需要启动一个本地的web服务器,便于tvOS应用通过模板展示内容时访问,所以你需要仔细查阅README.md文件去了解相关内容。

诚然TVMLKit还有许多知识点,如果你希望基于它开发一款tvOS应用,那么我提到的一些文档是非常值得你们去查阅参考的。这里我着重推荐大家首先看看如何使用菜单导航类的模板,比如menuBarTemplatemainTemplatesearchTemplate等。然而,如果你希望用户不只是被动的通过你的tvOS应用观看或收听内容,而是希望用户与应用有更多的交互,给用户高质量的用户体验,那么你们就需要了解如何开发完整的自定义的tvOS应用。

Custom Apps

你所知道的大多数iOS框架,比如UIKit、Core Graphics、CloudKit等等都可以在tvOS中使用。你可以在Apple提供的这个 文档中查看哪些框架可以用,哪些不可以使用。如果你现在正是一名iOS开发者,那么会对这个文档中的列表非常熟悉。而且不管使用Swift还是Objective-C或者C都可以开发tvOS应用。

尽管如此,如果想开发自定义的tvOS应用,还是有许多新的知识需要我们学习,作为一名iOS开发者,也应该掌握甚至精通这些新的知识。

Focus Engine

其中一个对于iOS开发者比较陌生的概念是用户输入/选择方法。在使用Apple TV的过程中,用户不会用手指去按压或滑动屏幕,取而代之的是使用Apple提供的遥控器或者是一些游戏控制器。

tvOS采用了一个被称为Focus Engine的引擎系统,它在整个tvOS中有且只有一个。该引擎负责响应当用户使用遥控器上的手势操作或按键操作对菜单或内容进行上下左右的选择。

Focus Engine会自动根据用户的选择决定要聚焦或展示的视图,你不需要在代码中做任何类似选中或导航的处理。比如说,此时展示的界面是你已经在Storyboard中设计好的视图布局,其中有一个视图是当前聚焦状态,那么当用户通过手势往右滑动时,Focus Engine会自动根据当前聚焦的视图找到与之相邻的左边的视图,并将其选中和聚焦。

tvOS-4

作为一个开发者,你必须要学习与Focus Engine相关的API,比如当聚焦的视图发生变化时如何获取通知、如何通过编码触发聚焦视图的改变扥等。更多关于Focus Engine的API可以参阅App Programming Guide for tvOS文档中的Supporting Focus Within Your App章节。

TVServices

虽然iOS开发者在tvOS应用的开发过程中,主要使用的是一些已经比较熟悉的iOS框架,但是也有一些tvOS特有的框架需要开发者们去了解掌握,比如像新加入的TVServices框架。

TVServices的主要作用是描述你的应用的内容,以便tvOS在首页的顶部栏位显示。在首页顶部栏位显示的应用都是用户自己设置的,用户可以将他们认为最为常用的或最为重要的应用放在首页顶部栏位,便于快速打开或浏览其中主要信息。

tvOS-5

你们的应用可以在用户不进入应用的情况下,向用户提供简短的、感兴趣的信息,这就会使你的应用有了额外价值,使用TVServices无疑是提高你的应用下载量的绝佳手段。比如一个游戏应用,通过TVServices显示游戏存档,那么用户就可以直接从首页通过游戏存档进入游戏。如果是一个社交应用,那么就可以在首页显示社交动态信息,如果是一个照片分享应用,那么就可以显示近期朋友和家人分享的照片。

更多关于TVServices的信息可以查阅TVServices Framework Reference文档。使用好它对你的应用非常有益。

Parallax Images

还有一件会让你疑惑的可能就是在发布会的Keynote中,Apple着重强调了图片和应用图标的视差效果。这是一个非常棒的视图效果,但是为什么这个特性会被放在Keynote中提及,它为什么这么重要呢?

如果你使用了tvOS模拟器,你就会明白为什么这个特性如此重要。当移动聚焦视图时,你需要向左或向右滑动,但如果你只滑动了一点,Apple会对当前聚焦的视图做一个轻微的旋转处理,目的是让用户知道现在正在作以操作(但是还需要继续滑动来改变聚焦视图)。这是一个着眼于细节但又非常有用的特性。

tvOS-6

Apple把视差效果看做tvOS设计中的一个关键组成部分,并强烈建议应用图标和电影海报使用该特性。不过感谢Apple在App Programming Guide for tvOS文档中提供了Creating Parallax Artwork章节,帮助我们创建视差特性的图片资源,以及为我们提供了视察图片资源的预览应用。

tvOS-7

Controllers

每一个购买了新Apple TV的用户,都会收到一个功能强大的新版遥控器。上一代只能上下左右简单选择方位以及只有几个简单导航按键的遥控器,而新一代的Apple TV遥控器增加了更多令人激动的新特性:

  • 玻璃触控板:位于遥控器的顶部,可以让用户在其上面进行一些手势操作,比如滑动、轻拍、点击。
  • 麦克风:可以让用户通过遥控器访问Siri(Siri有使用国家的限制)以及可以通过语音控制电视的音量。
  • 陀螺仪:结合动作传感器可以为用户提供非常棒的游戏体验。用户可以通过倾斜遥控器在游戏中控制方向盘开车,或者控制英雄奔跑穿越山洞。

tvOS-8

你可以使用你知道的处理手势操作的API去监听滑动或轻点,还有一些新的API去监听遥控器上不同的按钮,比如pressesBegan()pressesEnded()pressesChanged()pressesCancelled()

遥控器通过蓝牙技术与Apple TV主机交互,这意味着为蓝牙游戏控制器敞开的大门(恕我直言,用Apple的遥控器玩游戏并不是很好的选择)。Apple已经宣布Nimbus Steelseries Controller将会支持新Apple TV。想了解更多关于这方面的信息请查阅Working with Game Controllers。

tvOS and Games

我们衷心的希望游戏能在tvOS上火起来,Apple似乎是直接瞄准了任天堂漠不关心的一个游戏市场。

tvOS有很健壮的游戏技术作为支撑,SpriteKit和SceneKit都可以在tvOS中正常工作,在Keynote中Crossy Roads开发者展示了他们的tvOS游戏,该游戏使用Unity开发,所以这也暗示着在不久的将来tvOS也会支持Unity开发的游戏。

大多数用SceneKit开发的游戏都可以无缝移植到新Apple TV中。比如Ray就将教程中介绍过的Zombie Conga游戏移植到了新Apple TV中,花费时间还不到10分钟,几乎不需要修改任何代码。

注:游戏视频可前往原文查看,但需要科学上网。

Limitations

或许目前关于tvOS比较有疑惑的两点就是本地存储和应用大小的限制。

Limitation: Local Storage

关于本地存储,基本确定是没有!如果你的应用需要持久化用户的数据,那么你需要使用iCloud、CloudKit或者自己的备份服务去实现。任何试图存在Apple TV中的数据都不保证在下次打开应用时还嫩存在。如果你想同步不同设置之间的数据,那么你就需要将数据线存在某个地方,但绝不是Apple TV中。

tvOS-9

一定要牢记这点,它对于你设计tvOS应用的结构时很关键。这里列出了一些规则:

  • 如果你需要存储的数据量小于1MB,iCloud的key-value存储方式是一个可以选择的方案。但是要切记,iCloud KVS严格限制了只能有所属者才可以访问数据,并且不能共享给其他用户。
  • 如果你需要分享事件或者数据给其他用户,CloudKit是一个不错的选择方案。
  • 如果你开发的是一个跨平台的应用或者有特殊的需求,你就得使用你自己的备份服务了。

Limitation: App Size

另一个限制是关于应用大小的限制,规定不能超过200MB。

tvOS-10

在你们掀桌之前,请回顾一下WWDC2015以及介绍过的“On-Demand Resources”相关API。这几乎像是Apple为tvOS提前铺垫的。

这些API通过按需下载资源文件减小应用初始安装时的大小。开发者可以在Xcode中给多媒体资源文件用标签进行标记,将应用提交后,App Store会自动根据标记将多媒体资源文件拆分为一个一个下载包。当用户在使用应用时如果需要用到某类标记的资源文件,就可以请求下载该标记的资源文件。当然你得有预期的判断,要先于用户使用资源前开始下载他们需要的资源,这样对于用户来说他们根本不会感受到因为下载资源带来的不好的用户体验。

举一个简单的例子,比如你有一款游戏应用有10个关卡。在用户安装该游戏时可以只包含两个关卡的多媒体资源文件。一旦用户完成了第一个关卡,你应该发送一个下载请求,下载第三个关卡的多媒体资源文件。当用户完成了第二个关卡时,第三个关卡需要的资源文件早已下载好准备妥当。在用户的整个游戏过程中,你就可以运用该机制一步一步去下载所需的资源文件。

虽然这种机制对于开发者来说无疑增加了工作量,但是这对用户来说是一件非常愉悦的事情。你试想一下,用户是愿意等待下载一个1GB大小的游戏呢,还是更愿意下载一个100MB大小的游戏并立即开始游戏呢。不过该机制也存在一个隐患,如果用户的网络条件很差,他们一般都更愿意在晚上挂着下载。那么如果用户在白天玩你的游戏,然后同时用龟速的网络下载后面关卡的资源文件,这简直是令人发指的用户体验。不幸的是作为tvOS开发者,在这种情形下目前也无能为力。

(翻译/付宇轩 审校/唐小引)

文章来源: Ray Wenderlich

译者简介:

付宇轩(@DevTalking),从事Java中间件开发、iOS开发。主要主持开发企业级ETL中间件、BPM中间件、企业级移动应用,个人博客地址:http://www.devtalking.com。


预告:  2015中国移动开发者大会(MDCC 2015)将于10月15-16日在北京新云南皇冠假日酒店召开。大会特设五大技术专场:平台与技术iOS、平台与技术Android、产品与设计、游戏开发、企业移动化、虚拟现实专场。此外,大会更是首次举办国内极具权威影响力的IoT技术峰会,特设硬件开发技术与嵌入式开发两大专场。大会将聚集国内最具实力的产品技术团队,与开发者一道进行最前沿的探讨与交流。 

第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。

平台与技术专题论坛(二):游戏开发实践分享及IE11新体验 看Twitter上市后的入职面试题 六届中国大数据技术大会PPT精粹(三) AMD推多款异构计算开发工具 着力打造APU软件生态系统 Ceylon 1.0发布:又一个“Java语言替代品”? HTML5开发工具:英特尔XDK New 苹果公司为何“情系”PrimeSense 微App专场:不同平台下微App开发运营那些事 25载工程经验,HBase七年——BDTC2013讲师Michael Stack 或许对你创业有所启示:10个英国快速增长的科技创业公司 小米游戏中心10月报告:分析各种手游活动之优劣 欢网王智勇:传统电视厂商须补互联网基因 透露与百度合作细节 支付宝声波支付之初体验 首款使用HSA架构的Kaveri APU、多款异构计算开发工具APU13上齐亮相 分享10段实用的HTML5代码 十条建议送给那些初入职场的小白 这是要灭掉DC的节奏?谷歌欲推Android摄像头API 支持RAW 专访产品经理Markus Spiering:冬眠多年后的Flickr如何在夹缝中生存? 创业与投资专题论坛:硬件的现在!创业的未来? 造就Office新用法:微软推WP应用 可遥控Office文件 成为一名PHP专家其实并不难 前富士康CEO程天纵:创新来自长尾,创业源于创客! 最危险的开源项目——比特币 11月20日:微软正式发布Windows 1.0 回顾历代Windows版本界面 微软CEO鲍尔默卸职前在股东会上的最后演讲 微软改革员工排名制度或将开启新篇章 【快讯】SAP联合中国电信,又一外商公有云曲线入华 微软CloudOS云操作系统构建企业级三云合一 IE11支持JavaScript新型API,Web应用国际化更便捷 谷歌推订阅应用Play Newsstand:杂志+RSS阅读器 【信息图】到2020年开发者、设计师、测试员的数量将达到史无前例的高度 php为什么安上后不能用 在VS.Net中如何使注释生成已编译的HTML帮助文件? 我想更改Win2000的开机画面,请高手指点 ADO连接数据库时的事务处理问提 对于动态生成的控件,如何确定它的名字? vb 中使用select 的问题 想把post的变量遍历,怎样实现 小问题 关于参数 如何通过一个计算机名来查出它在局域网中的IP !!!!!~~~ 急,哪里可以下载IeWebControl? 有没有方法通过分布式连接直接从sql server写数据到oracle数据库。 郁闷问题:有谁知道Textbox在运行时如果没有任何输入,它是否空值? 如何用vb做一个启动程序(在windows启动运行) 请问,怎样将一个已分好区的电子盘格式化成ext2格式??? 请教web services问题 高分求购H261解码算法 子类中怎么用基类中的一个属性? 请问有没有JB7的中文教程,高分相求!(400分) 怎样在下拉列表框中显示数据表?具体怎么做? 请教,各位是如何实现对SQL SERVER的记录加密的? Datagrid中的HyperLinkColumn如何传递两个变量值给下一页? 高手请进:怎样将一个值传递到datagrid模板列的一个textbox中?问了好久,没有人会吗? ACCESS中的DATEPART函数为什么不能执行? 怎样在下拉列表框中显示数据表?具体怎么做? davidnim(天道酬勤) ,谢谢你了! EA 哥们们想你! 过年了你还好不? 听说你去了米国。。。。。。 我的winsock通信程序 一到晚上11点的样子就出现异常错误 异常处理问题 基础问题5!先答先给分! js里alert()的问题 win2k server+php4.2文件上传错误 如何解决画面抖动问题 请教:在sql server 2000中怎么执行sql语句? 深圳有那些公司用.net 自己重新编译了内核想安装到另外一台没有linux的机器 ORACLE中如何用SELECT语句将查询结果保存成文本格式文件。急急急!!答对一定给分!!! *.ASE文件格式是什么?在3D Explorer中可以把.3ds转换为这种格式吗? sqlserver2000 能否跨于访问 help me!!!!!!!!!!!!!!!!!! 在查询分析器中删除的数据可以恢复吗??急!!!!sql server 2000 角色问题 有重庆的朋友吗?进来介绍个好点的考点,南华中天怎么样? 修改鼠标形状 请问如何在浏览器上显示网站特有的图标??如163,sina等等 头发太飘逸了,风一吹就乱七八糟怎么办? 有没有遇到错误就中断的选项 请问各位大侠,VC中如何开发出浏览器全屏的程序? IdQuotedPrintableEncoder如何用呀,在线等。 散分,5个三角啦,顺便问一个问题 多烦人的IIS的验证!!死活搞不定!!!! 中国好声音巡演长沙站高清图集好声音巡演深圳站精彩现场图集好声音深圳巡演全场爆满 引爆最高人气好声音巡演重庆站火辣热情秀《中国好声音》第二季录制 东北学员组第二季《中国好声音》开录 让导师转身那英第二季好声音抢人有新招:我去年带“好声音”第二季严防剧透 程度堪比谍第二季中国好声音导师秀7:4:4:4 四大导师欢脱开转《中国好声音》第二季大不同 呈现&q第二季"好声音"好友变对手 好声音导师上演新“老友记奶爸金志文的人生“三级跳”那一年我们一起追过的杨32郎杨坤“中吴莫愁 那一年我们一起追过的《中国好李代沫发新专辑 “中国好声音”四大导《好声音》阿妹爱撒娇爱跳舞 那英女王《好声音来了》探秘录制现场 盘点第二第二季好声音开机发布会 张惠妹戏称自第二季《中国好声音》开录 关于抢人的浙江:单身汉遇情侣妒火中烧 用铁锤敲一周文艺这是在用绳命玩耍吗怎样用绘本让孩子爱上写作\"大北京·新香河\"论坛召开 香汐乌鲁木齐儿童医院专家提醒:别把儿童肺新疆“福康工程”服务南疆特殊人群甘肃建立应急救助制度 为“三无”病人太原警方严查“婚炮”扰民行为河北纪检将加紧查处城建、土地、治超等科比54秒连中三记3分 吃3大帽引张“球王”贝利因胃部不适病入院 病情并11家林果产品品牌成“新疆农业名牌”安倍晋三或推迟增税计划 提前大选巩固意大利一华人女童在车祸中受伤 经治疗吐鲁番开展百日百元高铁体验游刘德华送好友墨宝 写30字价值90万“双台联展”开创参展先河 奥迪A3 中国人赴美签证有效期延长 北美华侨华朝鲜拟成立多个经济开发区 称条件“得南京六朝博物馆“剁手俑”走红(图)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘