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

一个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)。

让窗口拒绝接受键盘和鼠标事件 -VB资料 让窗体处于最前面 -VB资料 让窗体居中 -VB资料 让所有的控件都动起来 -VB资料 让最大化和最小化按钮消失-VB资料 任意多边形的窗口-VB资料 如 何将「拒 绝 被 盖 住 的 窗 口 」还 原-VB资料 VB如何创建椭圆形的窗体? VB如何创建无Icon的窗体? VB如何防止Edit框中的Password不被非法获取 VB如何将鼠标显示成动画鼠标? VB如何利用程序拉下 ComboBox? VB如何让窗体右上角的X失效? VB如何使Form的背景图随Form大小改变 VB如何使Text文本框的属性只读? VB如何使窗体右上角的"X"无效? VB如何使窗体最小化并消失 VB如何在VB和Delphi中快速实现立体化窗口显示 VB如何在VB中实现绘图区的大十字光标 VB如何在VB中制作不回显的文本框 VB如何制作浮动式窗口 闪烁的Label-VB资料 设定StatusBar的文字成不同的颜色-VB资料 设计一个可中断循环的按钮-VB资料 设置“执行无用户界面”-VB资料 生成一个透明窗体 -VB资料 实现窗体内部的左右移动 -VB资料 实现鼠标移到窗口上时变大,移出窗体时变小(如《东方快车》)-VB资料 实现图片平铺于窗体中-VB资料 使程序的标题条闪烁 -VB资料 使窗口总在最前 -VB资料 离开 论坛 散分【九】 Application.messagebox和messagebox有什么区别呢? 水晶报表的两个小问题? 怎样向Foxpro表中添加float型数据? 离开 论坛 散分【十】 问一个和Session有关的问题,达人请进 在宏里把ie关闭。非常感谢 如何让window.showModalDialog的page提交数据到原来的父页面? 合租住房!! 有没有一个命令直接解开iso文件或提取里面的一个文件或文件夹 请给看看程序:AVI视频的读取和重建 如何显示出电脑内已经注册的dll文件列表? 中程浮点数问题! solaris下CC编译器的问题? UML的书籍和软件? 那里有vs.net2003的vss6.0d版本? 有时候exe文件不能运行? 自己准备写一个工资发放和发布的程序,欢迎探讨. 襄儿妹妹还在吗?幸好偶这个马甲还有点分,全给你吧,这个ID密码她不知道呵呵~~~ 关于linux WEB服务器名的问题? 请教ATL中CBindStatusCallback的问题 我的IE不能打开新窗口?用鼠标左键点击超链接没有反应? 我的项目改变目录后打不开,怎么办? 多CPU机器,同时可有几个线程处于运行状态? 高分求高效高斯模糊算法。。 如何判断软件是否过期 是不是运行ASP.Net应用的服务器必须安装.Net FrameWork呢?还是只要有Win2000 Server和IIS就行。 谈情说爱 清除内存中用call调用的脚本文件? 一个很老的问题,如何避免CListCtrl闪烁。 请大家给看看程序:avi视频读取和重建 研究数字图像处理应该那些知识? 图片上传并显示实例(VB+SqlServer2000) SQL语言中 怎样将CHAR型转换成INT型? 級連更新... 怎么实现回车自动跳到下一个位置 如何在光标处插入字符? CSSCLASS高手关注,我想把ListBox、DropDownList样式改为平面,而且颜色边框为1颜色不为灰色,用CssClass具体怎么写呢?越详细越好?多谢 求一招:::怎么对付那些那了代码就不给钱的家伙???? =========发誓:远离csdn!================ phpmyadmin为何安装不成功? 谁有crystal reports的电子书。 这个radio的返回值是什么? 离开csdn,公布密码!!!!!!!!! 新手!求界面问题的答案! javascript面相对象的编程 IMail邮件系统的问题 七月七,我不在她身旁. 可是很想她.我爱她. 高分!求一简单问题。 今天七月七了,代表所有单身人员向全体女单身同胞问好,同时也祝成双成对的人永远快乐!! 请问php中二维数组怎么定义和初始化? Duvalier Meets With Advisers as Haiti Holds Its Breath求标题翻译, ''爱国''和''爱国主义''之间的区别怎么表达出来? 《西游记》和《汤姆索亚历险记》30条不少于50字的读书感悟 毛邓课 演讲,帮忙想个主题吧谢谢 将两个相同的正方形纸片剪成若干块,然后拼成一个大的正方形,该怎么拼?两张纸片不一定要剪成一样的 上毛邓课是干嘛的? 对大学毛邓课看法co 一张由两个正方形(大的为2厘米,小的为1厘米)拼成的纸片,如只剪两刀,分开后能重新拼成一正方形,如何拼? 毛邓三全称 婆罗门,刹帝利,吠舍,首陀罗是古代南亚哪一国家的什么制度?这一制度的实质是什么? 分析比较郭沫若与闻一多的爱国主义思想(400字内)谢谢我指的400字内是400字左右 纽约女性:成为全美找对象最挑群体不是苹果公司为扩大在美零件生产将在亚利桑俄副防长指北约“坚定爵士”军演具有冷武汉大学官网被黑 恶意链接虚假学历查支付宝鼓励用户提前充值:余额宝不会出基金淘宝店出师不利 交易量日益走低苹果语音助理Siri配音员现身港版iPhone 5s/5c可用中国亚洲邮轮旅游市场增长迅速美国新泽西一商场发生枪击事件 暂无人三中全会前瞻:改革力度超以往 让民众[听·City]第一期活动圆满成功,中国(哈密)无人机航拍大会在新疆哈密新疆全面提升旅游服务质量 撤销11家“圣诞老人”爬上贵阳一大厦贾樟柯《山河故人》入选《西雅图银幕》台湾海基会人事调整 秘书长张天钦请辞青海省将有大范围降雪天气 日最高气温英媒盘点各国黑色料理 松花蛋也上榜(速看!这5种去除果蔬农药方法有蹊跷 广东甘化拟并购智同生物 高特佳健康生满载塑料空瓶晃晃悠悠 货车违规装载被
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘