Apple TV Tech Talks London

The new Apple TV is here and so Apple decided to organize talks at 11 places all over the world to spread the word. At AppFoundry, we were lucky enough to be invited at one of these events.

In this blogpost I’ll talk a bit about each subject that was addressed at the event.

Always connected device

They started the morning session by clarifying the philosophy of the Apple TV and what it will do to our living room experience. Apps are the future of TV was a line I heard multiple times. While I’m not quite convinced by this statement I must say I quite enjoy my new Apple TV! Streaming PLEX and watching Netflix are daily activities and this device enhances that experience by its speed and user experience. Playing small games like Does not commute or 2048 are also really fun on TV.

Let’s continue to the technical talks of the day:

Focus Engine

One of the new tools Apple created for the Apple TV is the Focus Engine. As the name states, it helps your application find focusable elements when swiping on your Siri Remote. Lets say that we have two buttons next to each other with the first button in focus. When swiping right the Focus Engine will look for focusable elements on the right side of this button. When it finds such element this element will be selected.

During the presentation they went a step further and explained the following scenario:

What we like to accomplish here is to focus Button 2 when a user swipes right from Button 3. The way the Focus Engine is designed is to just look to the sides of the element. Meaning that the Focus Engine will not see any focusable element when swiping right from Button 3. Luckily for us there is something named a UIFocusGuide which will redirect the focus to the correct element.

Storing data

As a tvOS developer you only have a few options to store data locally. Moreover, your app can only access 500 KB of persistent storage that is local to the device. Outside of this storage, all other data should be purgeable by tvOS when your device is running on low memory. So if you want to use CoreData don’t forget that the data could be gone at any given time.

You have the following options to manage resources:

  • Persistent storage
    • NSUserDefaults: As mentioned above we only have 500KB of persistent storage using the NSUserDefaults.
    • Keychain: Used to store account information.
    • iCloud key-value store: Mainly used for saving preferences. Limited to 1 MB per user and 1024 key-values that can be stored.
    • CloudKit: For storage higher then 1MB. Apple highly recommends CloudKit because it allows information stored by one user to be accessed by another user.
  • Temporary storage
    • NSCachesDirectory & NSTemporaryDirectory: For temporary local storage, apps may access the NSTemporaryDirectory and NSCachesDirectory in their own container, or NSCachesDirectory in a shared container.

On-Demand Resources

The maximum size of an App on tvOS is 200MB. This means that all other resources should be downloaded when needed, using On-demand resources. On-demand resources are files hosted on Apple’s servers to separate them from being downloaded with the app. That means the user doesn’t necessarily need to download all these files to enjoy your application. Lets say for example that you made a game with 15 levels but you only packaged the resources of the first level. Using this technology you can download the files for the second level while the user is playing the first.

All this is configurable inside Xcode and available for both tvOS and iOS.

How to test ODR

Now, to test ODR they gave a few tips:

First of all you can just test it out with Xcode or Xcode server, the files will be stored locally and not remotely but you can at least check out the status of these resources inside Xcode.

Secondly they spoke about a real world scenario using TestFlight. Here resources are stored on Apple’s servers and you can test for latency and performance issues. A pro tip here is to use the Network Link Conditioner on Apple TV to test on different download speeds. The last option is to test ODR for Enterprise distribution by connecting to your own web server.


Besides the tvOS frameworks, Apple created a new way of creating apps using TVML.

  • TVML (TV Markup Language) is some form of XML to create UI inside of a client-server app.
  • TVJS (TV JavaScript) is a javascript framework to display and interact with TVML.
  • TVMLKit is the part that brings the Javascript, TVML and native tvOS together.

The TVML architecture rests on a client-server principle which means you will have to host your own server to expose the Javascript and needed resources. The native app will load this javascript at startup and give it control. Yes, this means your app can be remotely updated without an App Store submission!

Designing for Apple TV


Authentication is one of the things you should delay until necessary. Users will often just close and delete your application if they’re required to log in. When ultimately asking for details, only ask for relevant info and collect as little as possible. Include fast switching profiles for multiple users and make restoring purchases obvious.

When building a form, think about flagging your email field as an email type. This will automatically show a keyboard where the user can press a button to fill in a previously filled email address. These email addresses are even shared among apps.


The first question you should ask yourself is: will your user instinctively know what to do in your app. Don’t know the answer? Test it with someone who hasn’t seen your product before and listen to their feedback. The less people need to read, the better. Try not to explain your users how you thought the app should be used. If something is not instinctively knowable, teach them gradually and in context.

Top shelf

The top shelf of the Apple TV Home screen is a great opportunity for added visibility when the user has placed your app in the top row of the Home screen. You can choose to lay it out in a banner or a sectioned way and it is even possible to dynamically load data. You can for example show recently released movies in theaters and encourage the user to press and check out the ticket availability inside your app.

One last design tip is to avoid cursors. Just use the Focus model, it’s specifically made for this!

App store distribution and marketing

Marketing wise, you can go three ways when building an application: reach a lot of people, revenue or both. While there is no real answer on what’s the best choice, Apple told us the majority of the applications in the store are free and are using in-app purchases. Consider global expansion and localize your app for markets you are targeting.

The product page will be the billboard of your app but before the user lands there, you will need to get his attention using the app icon and app name. Try to make them memorable and keep the name short. The screenshots need to tell some kind of story. Apple accepts 5 of them, so make sure to use them. You will also have the opportunity to explain the app’s purpose with a description. The golden rule here is to make this text 3 to 4 lines long.

Keywords are an other tool to attract people to your product page because they are used for search results. You will get 100 characters to fill and the app name and categories will be included for free. One tip they gave was to speak the customer’s language and think about what you yourself would be looking for as a customer.

One of the dreams of every Apple developer is probably to show up in the featured section of the AppStore. Apple was kind enough to share some tips and tricks to help you get noticed and increase the possibilities of getting there.

First of all you need to understand the way this process works. Every Thursday morning the list of featured apps is being refreshed and some of them might be seasonal meaning having a Christmas styled application might get you more attention. Localize your content and create something unique, make it the best app of its class. Try to engage living room experience and remember that the Apple TV is not a personal device. You may have to make a quick profile screen to select the user in front of the television. Make intuitive control and if you have to explain them, try not to make it a boring list but teach them while using. The experience of your app should be fantastic for first time users as well, so keep those login screens away until they are really needed. Performance of your application matters! Editors will test your application on a day by day basis before they decide to get you on the list. And last but not least, do not just port your app for the Apple TV! Think about its design and its use-cases.

Let them know!

If you think your app might be ready to be featured you can send them an e-mail at This mail should include the product details with the app ID and the store link. A product roadmap and marketing plans are really nice to haves and will surely improve your luck! If your app is brand new try to contact them 3 to 4 weeks before the initial release so they can check out a TestFlight build.

Getting featured is surely not something you can easily accomplish. But then of course, it’s also not impossible!

Good luck!