With the new Apple TV about to hit stores later this week, the whole community of users and developers alike is buzzing about the changes it could bring to the ecosystem. The main change is, of course, the apps that are now becoming the core of the platform, together with the new operating system, tvOS. With the new platform come the new design principles, as well as new ways of building applications.
Although the first reviews of the new Apple TV might sound not exactly as positive as we would’ve expected, it’s clear that after a few more iterations we’ll see a great polished thing that’s a pleasure to work with. (You do remember how the first iPhone felt, right?)
What else is clear is that the platform itself will live and die by the apps created on it. Therefore, the first impressions of developers about the platform could turn out to be even more important than those of actual customers. Fortunately, the programmers appear to be quite pleased by the prospects and possibilities of tvOS.
Some of the first critics of the new Apple TV platform have already mentioned that the experience is quite like having an iPhone on your TV screen. That’s not necessarily a bad thing though: among other things, it means that the tvOS can be as intuitive and smooth as iOS, which isn’t something you see in Smart TVs or set-top boxes too often.
Before going further to technical details, check out the recent presentation of our Anna Iurchenko about the UX and interaction on Apple TV.
We’ve visualized tips of “Apple TV Design Principles for App Developers” in a presentation and one-page infographics.
From the developer’s standpoint there’s also quite a few differences between tvOS and good ol’ iOS.
First of all, TVs don’t normally have touch screens, which means working with user input very different in tvOS. Prolific Interactive’s Thibault Klein explains the new way of doing things:
We are accustomed to developing apps with open-ended interfaces, allowing the user to navigate as they please; with tvOS, however, we now have to change our thought-process to a more linear navigation, one where users can only move from element to element in a strict fashion. To resolve this major issue and provide a good user experience, Apple worked on a focus engine that will help users seamlessly navigate the different elements of your app.
The focus engine is basically the concept, under which only one element on the screen is active at any given time. The user changes focus by using the remote (or a third-party controller), swiping on the touch surface or pressing buttons.
Normally you don’t need to do anything to tell the platform when and how to change focus, but there might be some exceptions, as explained in Apple’s App Programming Guide for tvOS:
Focus automatically updates when necessary most of the time, but sometimes your app needs to trigger a focus update programmatically. Any focus environment can request a focus update by calling, which resets focus to that environment’s preferredFocusedView.
In addition to the touch surface and buttons on various controllers, input options include the microphone (i.e. Siri, which currently can perform a limited amount of tasks and is only available in certain countries) and gyroscope. The latter is mostly used for gaming but it still makes sense to keep it mind when designing your app.
What works and what doesn’t
Experienced iOS developer Chris Wagner has explained what to do in order to start developing your first tvOS app:
tvOS is built upon iOS and lends many of the same frameworks that you may already be familiar with.
In order to develop for tvOS you will need to download Xcode 7.1 from the developer center. This is a beta version of Xcode that includes support for tvOS, and a tvOS Simulator. You can install the Xcode 7.1 beta alongside Xcode 7 GM if needed.
When you develop an Apple TV app, it will be a separate target which implies that tvOS apps would be a separate purchase for customers. However, in the keynote Apple said there would be support for ‘universal purchases’ where customers could purchase an iOS and tvOS app for a single price.
There are two different ways to build an app for tvOS: in Obj-C or Swift, using iOS frameworks like , , and , or with the new set of tools that includes , and .
In Apple’s TVML Reference, you can find 18 templates to start building TVML files for your app.
Developers who are about to start building apps for tvOS will face a few limitations they most probably didn’t have to deal with before.
First of all, the app size is limited by 200 MB. If you need more data downloaded to the consumer’s device, you’ll have to use the “On-Demand Resources” APIs to arrange for fetching of the additional data.
Second limitation is about local storage, which is simply not available on tvOS. If your app needs to keep any kind of data, which is usually the case, you’ll have to either use iCloud Kit or go ahead and set up your own cloud back-end.
Let’s now move from the fact-based observations to more subjective impressions that developers have got about the new platform.
It feels quite reliable:
After working a little bit with the beta SDK, I am really happy to see that tvOS is pretty stable. I did not experience any crashes or major issues; however, my prototype app was also pretty basic so I may not have encountered them.
For a brand new product, the documentation is already very detailed and helpful, for both UX and development. This makes it easy to jump in and make a solid, production-level tvOS app without much trouble since everything that you need to do is outlined very clearly.
The simulator is awfully big:
The simulator is huge. It simulates a 1080p display and, near as I can see, there’s no way to test it at a smaller resolution.
The simulator is big. Way to sell more 5K monitors, Apple. I am very glad my mac has a dual-head display.
The simulated remote may take a while to get used to:
You interact with the simulator using a simulated remote. You can’t just click around like you would in the iPhone simulator. After some reflection, I’m glad developers are forced to interact with tvOS apps the same way their users will.
The simulated remote feels awful. Maybe it’s just because I’m really bad at manual coordination but using this with a mouse is pretty bad. You use standard UIGestureRecognizers to detect most input as far as I can tell. There’s a new UIPress class for remote buttons and I assume like UITouch, each press has identifiers to map its lifetime.
To sum it up, it’s safe to say that currently there’s not many issues and pitfalls for developers in the new Apple’s platform. The new limitations and possible inconveniences are mostly something that developers just should get used to. Therefore, no reason not to go for it!