Migrating to Apple TV: The Basics

Note: There is a TON of stuff to say about the new Apple TV release. If you want to skip to the concrete details, jump down to “The Basics” below.

Yesterday, Apple announced the next update to Apple TV, along with something truly revolutionary to the Apple ecosystem: tvOS and the ability to create native applications that will run on the upcoming Apple TV.

The demonstrations were fantastic. Like the first iPhone presentation, and the iPad after that, I realized that this was going to be a huge game changer. To compare and contrast: I knew the Apple Watch would be useful, and I wanted one, but it was an expected item in the Apple constellation of products. The Apple TV update, on the other hand, feels much bigger.

The Opportunity

As was demonstrated by MLBAM’s Chad Evans during the Apple Event, media companies are going to be able to craft compelling in-home experiences. The immersive experiences these companies provide on the iPad are going to become a much bigger experience enjoyable by multiple people in the same room with Apple TV.

Gilt demonstrated the applicability to retail as well. And obviously games are about to explode on this platform.

Okay. I’m totally sold. Let’s do this.

As I watched these demos, I started trying to estimate the level of effort of moving a pre-existing, well-designed application to tvOS. The difficulty of supporting new Apple hardware has varied significantly over time.

Migrating from iPhone to iPad with anything other than a master-detail view typically took a significant design effort and a nontrivial amount of engineering and test support.

On the other hand, as iPhone form factors changed over time, AutoLayout made adding support for new devices much simpler, provided you followed the guidelines (and got through the overhead of mastering AutoLayout).

The level of effort to support the Watch wasn’t too terrible, as you could write an extension to your app to run on the phone. This requires some additional work beyond your iPhone app but nothing too exotic. watchOS2 offers more functionality but is also not a major effort compared to the initial iPhone-to-iPad move.

As my coworkers and I watched the presentation, I started to anticipate similar moves that Apple might have made to streamline migration to Apple TV. My very first thought was, “If you already have an iPad app, Auto Layout and good design practices are probably going to make this a pretty trivial jump to make.”

I soon realized that there were at least a few obvious differences that would require more than just adding a new target to your Xcode project. A deeper dive into the documentation made it obvious that this migration might be more involved than migrating a contemporary iPhone application to iPad.

There is potential to reuse a lot of internal code (in some cases), but it’s going to require quite a bit of retooling and seriously going back to the drawing board in terms of design.

The Basics

First off, you are building applications that will be used by one or more people sitting an average of 10 feet away from the screen, using the new Apple TV remote as the primary input device.

There’s a ton of things you’ll need to do just to be a good citizen on the platform, and a lot of production design as well (for what it’s worth, our company does this for people for money if you need any help). But let’s start off with an executive summary of the platform.

Screen Characteristics

The screen size for tvOS apps is 1920-by-1080. From an asset management point of view, here’s a bright spot: assets are @1x instead of the @2x and @3x used on various retina displays. That’s good, because it means you won’t have to carve out a ton of new assets just to support a new screen type. It also means faster download times for images, which will be important for reasons that will become clear later.

The Apple TV HIG states that view should be padded vertically by 60 pixels at the top and bottom, and by 90 pixels on the left and right, which will likely adjust the layouts slightly of pre-existing landscape-oriented iPad apps.

What’s Missing

There are a lot of things that are different about tvOS, and some things are absent all together.

Touch Input

This one is fairly obvious. Touch and multitouch are gone, along with most gestures, and easy keyboard input. All interactions with your app will be performed using the new remote or a game controller. Unlike iOS, there’s an added layer of separation between your interaction and the content, so direct manipulation is out.

What this means is you’re going to have to completely rethink how people interact with your app. If you’ve used an Apple TV before you’ll already have a good idea of what a lot of those interactions will be like, although the new remote offers some additional input options over the previous models.

A Local File System

One less obvious change is that your sandboxed file system is now apparently limited to your application bundle, which is now capped at a maximum size of 200 megabytes (that’s really small for a lot of apps).

This is a huge deal: Unlike iOS applications, all storage must be done in the cloud. If your existing app depends heavily on local storage and downloaded content, this is going to be problematic and may require significantly rearchitecting internal portions of your app.

As far as we can tell, built-in caching for NSURLConnection may still be present, but there are certainly no guarantees that cached data will stick around for very long.

Web Pages

WebKit is not present in tvOS, and UIWebView has been removed from UIKit. This is a huge change: Many of the media companies we work with rely heavily on webviews for specific areas of functionality. It’s also commonly seen as a practical way to build reusable components in HTML, CSS, and Javascript (such as score boards, schematics, etc.) to be rendered across iOS, Android, and Web pages.

I’m guessing that 60 to 80 percent of the major apps out there use webviews in one place or another, so this is going to require a serious level of effort to support for this platform.

All of this has been replaced with TVML, TVML Javascript, and TVMLKit — a markup language, Javascript variant, and corresponding framework.

What’s There

Fortunately, there’s still a lot present on tvOS that can still be leveraged . UIKit, Foundation, CoreData, CoreBluetooth, and other familiar faces are present and accounted for, although many of them have been modified compared to their counterparts on iOS 9. You can see a complete list of differences here.

The Bottom Line

This is only the day after tvOS was presented, and there’s already a ton of information I’ve seen that I haven’t captured yet. I’m trying to roll out the basics, because these were the very first questions that I had while getting started.

Apple TV is going to be huge, and we are all going to make some fantastic applications for people to enjoy. The bottom line is that, for most people, this isn’t going to be a straight port, and it’s not going to be as easy an update as some of the breaks Apple has given us in the past.

The next posts I’m going to roll out will deal with Apple’s UX guidelines, app requirements, and some lessons learned for 10-foot UX our team members are bringing to this new experience.

Follow Black Pixel on Twitter and Instagram.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.