AppleTV那些还没被修复的bug

虽然不是dev kit,也不是beta,但是也算是首批机器了(至少app已经上架AppStore了),但是越开发到后面越发现似乎Apple太急于发布新的AppleTV而放弃各种bug修复以及细节了。

 

 

最开始作为一个普通用户要说的自然是自带的AppStore商店,没有排行榜(目前距说已经有了但是我实际还没看到),首页的推荐也就是除了各种播放器(y2b之类的)就只有各种游戏了。相比起iOS和Mac的AppStore相差甚远。

 

第二个要说的是输入,自带的输入简直没法用,如果y2b啥的不是自带模糊搜索不然一个个字打简直烦死,特别是在那块小触摸板上滑动…本身没啥…但是这种“半精确操作的”情况下根本没发输入。搜索还好,要是输入比如连接服务器的时候的用户名密码,而且有些大小写混合的真心不如老AppleTV可以直接用手机输入。

 

第三个是虽然AppleMusic可以用,但是beat1连不上,不知道什么问题…一连接就出错。

 

 

 

然而作为开发者的话,这上面的都没啥,痛苦的是在写app上。

第一个要喷的还是搜索,虽然有UISearch的API但是interface builder里居然没有任何Search相关的东西,然后官方给出的例子是按钮进入搜索的话….初始化代码是在按钮上的,但是如果需要使用TabBar之类的就变得非常麻烦了,根本不知道该怎么写出实话UISearch相关的东西。

 

第二个要喷的是遥控器控制居然单个按钮执行不同动作的时候会调用不同的API,比如暂停播放的时候掉用的是UIEvent的remoteControlReceivedWithEvent(这是以前iOS上通过耳机线控调用的API),然而如果要控制开始播放,得调用UITapGestureRecognizer的pressesBegan withEvent(这似乎是针对tvOS新写的API),虽然同是UIResponder里的东西,但是居然会根据播放状态不同调用不同的API这个也太神奇了。然后更神奇的是在app运行时和app在后台时也是一样,由于暂停和恢复播放是调用不同的API,而且remoteControlReceivedWithEvent相当于是前后台支持的API,而pressesBegan withEvent需要通过UITapGestureRecognizer才能使用,所以就导致了app如果退到后台只能暂停播放,不能恢复播放(因为无法调用pressesBegan withEvent),而且这个似乎目前无解。

更恶心的是,AppleTV真机和Xcode的AppleTV模拟器居然有不一样的结果,就上面这个播放控制来说,模拟器上就完全不会调用支持后台的remoteControlReceivedWithEvent,只能使用pressesBegan withEvent,所以连后台控制播放都难以做到(似乎只能通过UITapGestureRecognizer本身的handleTap来区分按钮了)。

哦对了,之前还因为MENU不能退出app(返回主界面,不是完全退出,因为得保留后台播放)导致被拒,后来网上查了一圈说在pressesBegan withEvent里把presses传回super就好了,但是网上无一例外写的都是return [super pressesBegan:presses withEvent:event],然并卵,最后发现其实实际上应该是return [super pressesEnded:presses withEvent:event]。然而但是如果直接写pressesEnd withEvent而不是began的话根本不会调用….而且很多API确实不知到为啥根本不会call….特别是官方自己写的都有问题,比如handleTap里state根本不会出现UIGestureRecognizerStateBegan,而只会有UIGestureRecognizerStateEnded。非常神奇。

官方还说可以使用MPRemoteCommandCenter,但是试试证明在tvOS上根本没用,这个完全就是给iOS用的,差不多相当于是控制从屏幕底端向上拉出来的那个控制中心中的音乐控制,即便是有有关遥控器的代码也只是针对iOS设备插上底座用红外遥控器操作的,并不是针对AppleTV这种自带遥控器的所设计的。

其他比如motionBegan和motionEnd啥的,iOS上可以用来比如内置的Music app可以通过摇晃设备来随机播放歌曲(老功能了),然而在tvOS上就完全不行。

 

还有就是由于没有通知中心,所以推送功能也基本上相当于是不能用,而且不像Mac app那样可以通过几行简单的代码来写比如切换歌曲时候的提示,基本上只能靠Local push,然而你们也没见过哪个iOS上的音乐播放器每换一次歌都会弹出一次推送吧?所以这功能也相当于是没法写。

 

还有些操作上的东西也没有完善,比如现在遥控器选择的东西叫Focus,然后以前的setSelected就不好用了,比如按列表最底下的按钮来刷新tableView之后想要跳转选中列表第一个,如果只用selectRowAtIndexPath的话,虽然列表可以滚动到顶端了,但是focus还是在最底下,然后这个时候除了向上按一次会强制把列表回滚到底端,其他方向键完全没用。

 

还有就是比如NavigationItem,居然选中之后直接变成全白色按钮…而且app审核还能通过!估计是Apple自己也知道这个问题(而且beta的时候就存在了)。

 

 

 

所以由此可见tvOS还有很长的修补的路要走,Apple确实有些急于发布了,但是实测下来性能确实挺高,至少有些游戏的加载速度比我iOS设备还要快。但是我感觉Apple过于关注AppleTV的视频和游戏性能了,其实可以有很多更好的app可以呈现在AppleTV上的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

:b1 :b2 :b3 :b4 :b5 :b6 more »

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).