{"id":6082,"date":"2016-06-03T00:00:10","date_gmt":"2016-06-03T07:00:10","guid":{"rendered":"http:\/\/thinkapps.com\/blog\/?p=6082"},"modified":"2016-06-03T00:29:52","modified_gmt":"2016-06-03T07:29:52","slug":"apple-tv-app-how-to-design-develop","status":"publish","type":"post","link":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/","title":{"rendered":"Apple TV: How to Design and Develop An App for the Big Screen"},"content":{"rendered":"<p><em>This is part two of our Apple TV series.\u00a0In the <span style=\"text-decoration: underline;\"><a title=\"Apple TV: Should You Create an App for the Little Black Box?\" href=\"http:\/\/thinkapps.com\/blog\/development\/apple-tv-should-you-create-an-app\/\" target=\"_blank\">first post<\/a><\/span>, we explored whether you should build an app for this platform. Now we&#8217;ll explain how to design and develop an Apple TV app.<\/em><\/p>\n<p>As we explained in a <a title=\"Apple TV: Should You Create an App for the Little Black Box?\" href=\"http:\/\/thinkapps.com\/blog\/development\/apple-tv-should-you-create-an-app\/\" target=\"_blank\">previous post<\/a>, the <a title=\"Apple TV\" href=\"http:\/\/www.apple.com\/tv\/\" target=\"_blank\">Apple TV<\/a> has been around for quite some time. In fact, it was introduced back in 2007, when the very first iPhone was released.<\/p>\n<p>But, unlike the iPhone, the Apple TV had a back-seat status of being more of an Apple hobby. And despite numerous incremental improvements over the years, this little black box had still not received much attention from Apple.<\/p>\n<p>This all changed, however, in fall 2015.\u00a0Amidst the excitement of Apple\u2019s announcements of the new iPhone 6S and iPad Pro in September, the company\u00a0finally put Apple TV in the spotlight.<\/p>\n<p>The device has been reborn with an array of <a title=\"Designing Hardware for the Internet of Things\" href=\"http:\/\/thinkapps.com\/blog\/design\/designing-hardware-jawbone-founder\/\" target=\"_blank\">hardware enhancements<\/a>, including a fast A8 processor. And the new Apple TV will be controlled through a cleaner interface with deep searching, a gesture-friendly remote control, and the ability to hook up gaming controllers\u00a0\u2014 all powered by Siri.<\/p>\n<p>But the most notable improvement is the all-new tvOS framework, which <a title=\"Developing for Apple TV\" href=\"https:\/\/developer.apple.com\/tvos\/\" target=\"_blank\">opens up the platform for the first time to third-party developers<\/a>.\u00a0<span style=\"font-weight: 400;\">No longer is the Apple TV a second class citizen in Apple&#8217;s app-driven ecosystem.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">In this article, we&#8217;ll explain the process of developing and designing an Apple TV app,<\/span><span style=\"font-weight: 400;\">\u00a0starting with the different approaches developers can take when building for\u00a0tvOS, followed by some design considerations. <\/span><\/h3>\n<h2><span style=\"font-weight: 400;\">Apple TV Apps: TVML vs Custom<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Being a completely new platform for third-party developers, Apple has provided\u00a0two different approaches for\u00a0creating <\/span><span style=\"font-weight: 400;\"><a title=\"The New Apple TV\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/General\/Conceptual\/AppleTV_PG\/index.html#\/\/apple_ref\/doc\/uid\/TP40015241\" target=\"_blank\">tvOS apps<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The first utilizes Apple&#8217;s new\u00a0<a title=\"TVML by Apple\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/\" target=\"_blank\">Television Markup Language (TVML)<\/a>, a\u00a0<\/span><span style=\"font-weight: 400;\">JavaScript-centric framework that is well suited to video consumption apps like <\/span><span style=\"font-weight: 400;\">Hulu<\/span><span style=\"font-weight: 400;\"> or <\/span><span style=\"font-weight: 400;\">Ted TV<\/span><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">The second option is a custom app<\/span><span style=\"font-weight: 400;\">, which essentially is an iOS app that conforms to various tvOS SDK features and requires extensive use of Swift or Objective-C. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Next we will explain each of these approaches in greater detail, including\u00a0their benefits and limitations.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">TVML<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">TVML<\/span><span style=\"font-weight: 400;\"> acts as a bridge or gateway between native iOS code and the\u00a0<a title=\"Guide to UX and UI Design\" href=\"http:\/\/thinkapps.com\/blog\/design\/ux-and-ui-design-guide\/\" target=\"_blank\">UI<\/a>\u00a0for\u00a0Apple TV.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you decide to go with this approach, you would build your app through a series of JavaScript pages, without having to rely too heavily on Swift or Objective-C. Instead, you would utilize\u00a0<\/span><a title=\"Apple's TVMLKit\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/TVMLKit\/Reference\/TVMLKit_Collection\/\" target=\"_blank\"><span style=\"font-weight: 400;\">TVMLKit<\/span><\/a><span style=\"font-weight: 400;\">, consisting of TVML and\u00a0<span style=\"font-weight: 400;\"><a title=\"Apple's TVJS Framework\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/TVMLJS\/Reference\/TVJSFrameworkReference\/index.html#\/\/apple_ref\/doc\/uid\/TP40016076\" target=\"_blank\">TVJS<\/a>.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Each TVML template represents a single page and is made up of a series of <\/span><i><span style=\"font-weight: 400;\">simple and compound elements<\/span><\/i><span style=\"font-weight: 400;\">, which contain content information or images that\u00a0are displayed on screen. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The sequence of orchestrating and displaying TVML template pages is managed via a TVJS\u00a0<\/span><span style=\"font-weight: 400;\">JavaScript file called by the tvOS binary app, which handles user input in addition to loading various pages.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.28-PM.png\" rel=\"attachment wp-att-7148\"><img loading=\"lazy\" decoding=\"async\" width=\"615\" height=\"245\" class=\"alignnone wp-image-7148 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.28-PM.png\" alt=\"Apple TV App: TVML\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.28-PM.png 615w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.28-PM.png 300w\" sizes=\"(max-width: 615px) 100vw, 615px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">In the client-server paradigm, your JavaScript file orchestrates loading assets (images, videos, text content) from the server and overlays them into the UI elements, which sit within the TVML files.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.57-PM.png\" rel=\"attachment wp-att-7147\"><img loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"391\" class=\"alignnone wp-image-7147 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.57-PM.png\" alt=\"Apple TV App: TVMLKit\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.57-PM.png 614w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.30.57-PM.png 300w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/a><\/p>\n<p>TVML<span style=\"font-weight: 400;\"> makes use of traditional web networking technologies such as HTTPS, XMLHttpRequest, DOM, and other JavaScript libraries to acquire content to display TVML pages.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Templates<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">As mentioned in part one of this series, Apple provides 18\u00a0<\/span><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><a title=\"Apple's TVML Templates\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/TextboxTemplate.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH2-SW8\" target=\"_blank\">TVML templates.<\/a>\u00a0The list includes an<\/span>\u00a0<\/span><span style=\"font-weight: 400;\">alertTemplate,\u00a0<\/span>catalogTemplate<span style=\"font-weight: 400;\">,\u00a0<\/span><span style=\"font-weight: 400;\">productTemplate,<\/span><span style=\"font-weight: 400;\"> ratingTemplate, searchTemplate<\/span><span style=\"font-weight: 400;\">, and more.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Each of these templates serves a specific role, while allowing developers to add their own simple and compound elements to customize each screen. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">We will discuss various UX considerations when designing screens in the second half of this article.)<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.32.43-PM.png\" rel=\"attachment wp-att-7146\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"619\" class=\"alignnone wp-image-7146 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.32.43-PM.png\" alt=\"Apple TV App: TVML Templates\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.32.43-PM.png 612w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.32.43-PM.png 297w\" sizes=\"(max-width: 612px) 100vw, 612px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">A template in code\/script format would resemble something like the\u00a0alertTemplate below:<\/span><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">&lt;document&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0&lt;alertTemplate&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 &lt;title&gt;Update Available&lt;\/title&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 &lt;description&gt;Get the latest tvOS version&lt;\/description&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 &lt;button&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;text&gt;Update Now&lt;\/text&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 &lt;\/button&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 &lt;button&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;text&gt;Cancel&lt;\/text&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 &lt;\/button&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">\u00a0 \u00a0&lt;\/alertTemplate&gt;<\/span><\/em><\/p>\n<p style=\"padding-left: 60px;\"><em><span style=\"font-weight: 400;\">&lt;\/document&gt;<\/span><\/em><\/p>\n<p><span style=\"font-weight: 400;\">You can check out the complete list of TVML templates that\u00a0<\/span><span style=\"font-weight: 400;\">Apple provides\u00a0<\/span><a title=\"Apple's TVML Templates\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/TextboxTemplate.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH2-SW8\" target=\"_blank\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">We expect to see\u00a0third-party templates gradually become available, and Apple will also most likely continue\u00a0adding new templates in the future.<\/span><\/p>\n<h3>Simple and Compound Elements<\/h3>\n<p><span style=\"font-weight: 400;\">TVML pages contain both\u00a0<\/span><a title=\"Apple TV Simple Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/SimpleDisplayElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH19-SW1\" target=\"_blank\"><span style=\"font-weight: 400;\">simple elements<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a title=\"Apple TV Compound Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/CompoundBackgroundElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH24-SW3\" target=\"_blank\"><span style=\"font-weight: 400;\">compound elements<\/span><\/a><span style=\"font-weight: 400;\">, which together make up the template.<\/span><\/p>\n<h4><strong>Simple Elements<\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">Simple elements represent a singular item, be it a badge, text, image, etc.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.08-PM.png\" rel=\"attachment wp-att-7145\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"299\" class=\"alignnone wp-image-7145 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.08-PM.png\" alt=\"Apple TV App: Simple Elements\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.08-PM.png 583w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.08-PM.png 300w\" sizes=\"(max-width: 583px) 100vw, 583px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.49-PM.png\" rel=\"attachment wp-att-7144\"><img loading=\"lazy\" decoding=\"async\" width=\"608\" height=\"350\" class=\"alignnone wp-image-7144 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.49-PM.png\" alt=\"Apple TV App: Simple Elements Example\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.49-PM.png 608w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-2.33.49-PM.png 300w\" sizes=\"(max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Some of the s<\/span><span style=\"font-weight: 400;\">imple display elements <\/span><span style=\"font-weight: 400;\">that Apple has made available so far include:<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><i><span style=\"font-weight: 400;\">Badge<\/span><\/i><\/i><span style=\"font-weight: 400;\"> \u2014<\/span><span style=\"font-weight: 400;\">\u00a0a link to a small image that is usually displayed on top of another image (similar to the badges we see on iOS app icons)<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><span style=\"font-weight: 400;\">DecorationImage \u2014<\/span><\/i><span style=\"font-weight: 400;\">\u00a0an image that is usually displayed inside of another image<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><span style=\"font-weight: 400;\">FullscreenImg<\/span><\/i><span style=\"font-weight: 400;\"> \u2014 displays the image over an entire element<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><span style=\"font-weight: 400;\">HeroImg<\/span><\/i><span style=\"font-weight: 400;\"> \u2014 a hero image, usually displayed inside of a banner<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><span style=\"font-weight: 400;\">Img<\/span><\/i><span style=\"font-weight: 400;\"> \u2014 a standard image, usually a preview image of a product<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><span style=\"font-weight: 400;\">RatingBadge<\/span><\/i><span style=\"font-weight: 400;\"> \u2014 a different type of badge that is displayed inside a <\/span><i><span style=\"font-weight: 400;\">review card, <\/span><\/i><span style=\"font-weight: 400;\">which is a compound element<\/span><\/p>\n<p style=\"padding-left: 30px;\"><i><span style=\"font-weight: 400;\">SeasonBadge<\/span><\/i><span style=\"font-weight: 400;\"> \u2014 an image to indicate the season count, which is also usually displayed inside a <\/span><i><span style=\"font-weight: 400;\">review card<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Apple also provides\u00a0<\/span><a title=\"Apple TV Simple Multimedia Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/SimpleMultimediaElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH20-SW2\" target=\"_blank\"><span style=\"font-weight: 400;\">simple multimedia elements<\/span><\/a><span style=\"font-weight: 400;\">\u00a0for streaming audio and video stored on a server, as well as an array of <\/span><a title=\"Apple TV Simple Text Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/SimpleElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH4-SW1\" target=\"_blank\"><span style=\"font-weight: 400;\">simple text elements<\/span><\/a><span style=\"font-weight: 400;\">\u00a0for creating headings, monograms, ordinal elements, and so forth.<\/span><\/p>\n<h4><strong>Compound\u00a0Elements<\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">Compound elements<\/span><span style=\"font-weight: 400;\"> are higher-level groupings of s<\/span><span style=\"font-weight: 400;\">imple elements<\/span><span style=\"font-weight: 400;\">, consisting of <\/span><a title=\"Apple TV Compound Background Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/CompoundBackgroundElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH24-SW3\" target=\"_blank\"><span style=\"font-weight: 400;\">compound background elements<\/span><\/a><span style=\"font-weight: 400;\">\u00a0that display images prominently in the back of elements, as well as play audio in the background of a template page. <\/span><\/p>\n<p><a title=\"Apple TV Compound Banner and Header Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/CompoundBannerHeaderElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH23-SW3\" target=\"_blank\"><span style=\"font-weight: 400;\">Compound banner and header elements<\/span><\/a><span style=\"font-weight: 400;\">\u00a0contain buttons, heroImg, row, stack, and other types of simple elements.\u00a0There is also a\u00a0footer compound element and itemBanner, which displays information along the top of the element and consists of <\/span><span style=\"font-weight: 400;\">heroImg, row,\u00a0<\/span><span style=\"font-weight: 400;\">and I<\/span><span style=\"font-weight: 400;\">mg<\/span><em><span style=\"font-weight: 400;\">.<\/span><\/em><\/p>\n<p><a title=\"Apple TV Compound Information Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/CompoundInformationElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH22-SW1\" target=\"_blank\"><span style=\"font-weight: 400;\">Compound information elements<\/span><\/a><span style=\"font-weight: 400;\"> provide user-specific group elements such as <\/span><i><span style=\"font-weight: 400;\">activity indicators<\/span><\/i><span style=\"font-weight: 400;\"> and\u00a0<\/span><i><span style=\"font-weight: 400;\">placeholders<\/span><\/i><span style=\"font-weight: 400;\">, as well as\u00a0<\/span><i><span style=\"font-weight: 400;\">ratingCard<\/span><\/i><span style=\"font-weight: 400;\">\u00a0and <\/span><i><span style=\"font-weight: 400;\">relatedContent<\/span><\/i><span style=\"font-weight: 400;\"> elements. Information elements could also include <\/span><i><span style=\"font-weight: 400;\">menuItem<\/span><\/i><span style=\"font-weight: 400;\"> for labeling an item inside of a <\/span><i><span style=\"font-weight: 400;\">menuBar<\/span><\/i><span style=\"font-weight: 400;\">\u00a0and <\/span><i><span style=\"font-weight: 400;\">reviewCard<\/span><\/i><span style=\"font-weight: 400;\"> for displaying abbreviated review information. <\/span><\/p>\n<p><a title=\"Apple TV Compound Display Elements\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/CoumpoundDisplayElements.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH18-SW6\" target=\"_blank\"><span style=\"font-weight: 400;\">Compound layout elements<\/span><\/a><span style=\"font-weight: 400;\"> help organize and display elements they contain as a <\/span><i><span style=\"font-weight: 400;\">shelf, collectionList, grid, imgDeck, infoList, list, menuBar, overlay, section,<\/span><\/i><span style=\"font-weight: 400;\"> and more. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Compound lockup elements are a combination of other elements treated as a single element, usually presented in grouped elements like a shelf. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For instance, you might\u00a0incorporate a <\/span><i><span style=\"font-weight: 400;\">badgeLockup<\/span><\/i><span style=\"font-weight: 400;\">, which is a combination of <\/span><i><span style=\"font-weight: 400;\">badge <\/span><\/i><span style=\"font-weight: 400;\">and <\/span><i><span style=\"font-weight: 400;\">title<\/span><\/i><span style=\"font-weight: 400;\">, or <\/span><i><span style=\"font-weight: 400;\">listItemLockup,<\/span><\/i><span style=\"font-weight: 400;\"> which is a list item consisting of various elements, such as <\/span><i><span style=\"font-weight: 400;\">decorationImage, Img, ordinal, relatedContent,<\/span><\/i><span style=\"font-weight: 400;\"> and more.<\/span><\/p>\n<h4><strong>Additional Notes about\u00a0Elements<\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">In addition to <\/span><span style=\"font-weight: 400;\">s<\/span><span style=\"font-weight: 400;\">imple and compound elements<\/span><span style=\"font-weight: 400;\">\u00a0and working with predefined t<\/span><span style=\"font-weight: 400;\">emplates<\/span><span style=\"font-weight: 400;\">, Apple also provides guidance on how you can <\/span><a title=\"Apple TVML Styles\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/LanguagesUtilities\/Conceptual\/ATV_Template_Guide\/ITMLStyles.html#\/\/apple_ref\/doc\/uid\/TP40015064-CH11-SW1\" target=\"_blank\"><span style=\"font-weight: 400;\">style elements<\/span><\/a><span style=\"font-weight: 400;\"> with colors,\u00a0attributes, font weights and sizes, and margins. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">There are tons of elements and templates available, and it can be overwhelming. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">That&#8217;s why it&#8217;s a good idea for you to download the <\/span><a title=\"Apple TVML Catalog app\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/samplecode\/TVMLCatalog\/Introduction\/Intro.html#\/\/apple_ref\/doc\/uid\/TP40016505\" target=\"_blank\"><span style=\"font-weight: 400;\">TVML Catalog sample app<\/span><\/a><span style=\"font-weight: 400;\">, which will allow you to play with all the different options\u00a0and\u00a0find the right fit and feel to meet your app needs. <\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Benefits and Limitations<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">You&#8217;ve now had a\u00a0brief introduction to TVMLKit, which is a completely new framework for creating tvOS apps. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The most striking feature is how simple it is to get started, with\u00a0a rich tapestry of simple and compound elements\u00a0and the ability to promote\u00a0conformance through templates.\u00a0For developers already familiar with JavaScript and Node.js, this is a perfect framework to create a rich, compelling client-server app. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, there are some distinct limitations to TVML apps vs. custom apps. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The most notable limitation is <\/span><span style=\"font-weight: 400;\">that TVML\u00a0is\u00a0only suited to simple, lightweight apps that support accessing a list of videos or audio on a server, but nothing too complex or fancy like creating games or iOS-style apps. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you want to create a more iOS-style app, such as\u00a0an AirBnB-like app or 3D game, you will need\u00a0to build\u00a0a custom Apple TV app. We will discuss that approach\u00a0in greater detail in the next section.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Custom Apps<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">In the context of Apple TV, custom apps<\/span><span style=\"font-weight: 400;\"> are basically just iOS apps that are extended to conform to the tvOS SDK. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In most cases, seasoned Swift and Objective-C iOS developers are already\u00a0accustomed to most of the libraries that are part of tvOS, including AVKit, AVFoundation, UIKit, CoreGraphics, CloudKit, and so forth. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For\u00a0iOS developers, this process should be rather\u00a0straightforward. However, developers do need to be mindful\u00a0of the differences in designing and developing for tvOS as opposed to iOS.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">The Focus Engine<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Apple TV developers\u00a0don\u2019t have the luxury of having a screen where they\u00a0can use touch gestures. Instead they must rely on a\u00a0remote that\u00a0uses the <\/span><a title=\"Working with the Apple TV Remote\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/General\/Conceptual\/AppleTV_PG\/WorkingwiththeAppleTVRemote.html#\/\/apple_ref\/doc\/uid\/TP40015241-CH5-SW4\" target=\"_blank\"><span style=\"font-weight: 400;\">Focus Engine<\/span><\/a><span style=\"font-weight: 400;\"> to focus on a single item at any given time, using remote swipe gestures. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Of course, users can also use Siri to control their element interactions on the Apple TV or plug in a bluetooth gaming controller for playing games. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This means developers need to design their storyboard and elements in a manner that is conducive to users navigating with singular focus, clearly and consistently, in a layout that is either grid-like or stacked logically. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">(We will discuss the UX aspects further in the next section of\u00a0this article.)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As Apple explains in its\u00a0<a title=\"Working with the Apple TV Remote\" href=\"https:\/\/developer.apple.com\/library\/tvos\/documentation\/General\/Conceptual\/AppleTV_PG\/WorkingwiththeAppleTVRemote.html\" target=\"_blank\">documentation<\/a>:<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">&#8220;Focus refers to the effect onscreen of external, indirect user input from a remote or another input device. In a focus-based interaction model, a single view onscreen is considered focused, and the user can move focus to other views by navigating through different UI items onscreen, which triggers a focus update. <\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">&#8220;The focused view is used as the target of any user actions. For example, if an onscreen button is focused, the button\u2019s action is triggered when a select event is sent from a remote.&#8221;<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Conforming Existing iOS Elements to\u00a0tvOS<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Most of the existing standard Apple frameworks, such as <a title=\"Apple UIKit\" href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/UIKit\/Reference\/UIKit_Framework\/\" target=\"_blank\">UIKit<\/a>, will\u00a0automatically support the <\/span><span style=\"font-weight: 400;\">Focus Engine,<\/span><span style=\"font-weight: 400;\">\u00a0meaning they inherently support the behavior of being controlled by an Apple TV remote for focus, without any additional\u00a0programming needed. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">It\u2019s just a matter of understanding which UIKit elements can receive focus and which can\u2019t. For example,\u00a0UIButtons can receive focus, while\u00a0UILabels obviously cannot. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The standard UITableView and UICollectionView elements allow developers\u00a0to use the standard delegate objects they\u00a0are familiar with in order to receive\u00a0<a title=\"Apple UIFocusEnvironment\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/UIKit\/Reference\/UIFocusEnvironment_Protocol\/index.html#\/\/apple_ref\/occ\/intf\/UIFocusEnvironment\" target=\"_blank\"><span style=\"font-weight: 400;\">UIFocusEnvironment<\/span><\/a>\u00a0behavior events.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can also obtain focus updates through delegates programmatically, but you cannot control or set focus explicitly and programmatically, such as to move focus to a certain element. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">UITextField,\u00a0UITableView, UICollectionView, and UISearchBar also have inherit focus support, which developers\u00a0should be able to understand by referring to Apple\u2019s reference documentation. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gestures and touches are observed synonymously to iOS apps, through <\/span><a title=\"Apple UIGestureRecognizer\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/UIKit\/Reference\/UIGestureRecognizer_Class\/index.html#\/\/apple_ref\/occ\/cl\/UIGestureRecognizer\" target=\"_blank\"><span style=\"font-weight: 400;\">UIGestureRecognizer<\/span><\/a><span style=\"font-weight: 400;\"> delegate methods and the <\/span><a title=\"Apple UIResponder\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/UIKit\/Reference\/UIResponder_Class\/index.html#\/\/apple_ref\/occ\/cl\/UIResponder\" target=\"_blank\"><span style=\"font-weight: 400;\">UIResponder<\/span><\/a><span style=\"font-weight: 400;\"> class, with the added methods to respond to buttons pressed via the Siri remote, as well as responding to pan and swipe gestures via the remote glass pane. <\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Custom Support for Focus Engine<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">For custom UI elements that don\u2019t have inherent focus support, you will need to <\/span><span style=\"font-weight: 400;\">implement your own custom behavior for focusing.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This\u00a0<\/span><span style=\"font-weight: 400;\">would entail receiving delegate callbacks to update the app state based on the focus change. Alternatively,\u00a0the developer can\u00a0create a new kind of custom focus interaction interface design.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Through <\/span><a title=\"Apple UIFocusEnvironment\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/tvos\/documentation\/UIKit\/Reference\/UIFocusEnvironment_Protocol\/index.html#\/\/apple_ref\/occ\/intf\/UIFocusEnvironment\" target=\"_blank\"><span style=\"font-weight: 400;\">UIFocusEnvironment<\/span><\/a><span style=\"font-weight: 400;\">, you can dictate how each UI element reacts to changes in focus by\u00a0having your UI control conform to the <\/span><span style=\"font-weight: 400;\">UIFocusEnvironment Protocol.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This will allow you to gain access to the custom focus behaviors, including where the focus is allowed to move and\u00a0how to respond to the focus.\u00a0<\/span><span style=\"font-weight: 400;\">You also gain access to <\/span><span style=\"font-weight: 400;\">focus updates as they occur<\/span><span style=\"font-weight: 400;\">, through a callback delegate method called\u00a0<\/span><span style=\"font-weight: 400;\"><em>didUpdateFocusInContext:withAnimationCoordinator:<\/em>.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Benefits and Limitations<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The benefits of c<\/span><span style=\"font-weight: 400;\">ustom apps<\/span><span style=\"font-weight: 400;\"> pick up where <\/span><span style=\"font-weight: 400;\">TVML apps<\/span><span style=\"font-weight: 400;\"> left off, as\u00a0you can use this approach to create truly\u00a0robust iOS apps for the big screen. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you are a seasoned Swift or Objective-C developer, you will feel very much at home. And, by conforming to certain design principles (which we will discuss shortly), as well as certain protocols, your standard frameworks will\u00a0work seamlessly on tvOS in most cases. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Of course, not every framework has been ported to tvOS, which is why developers need to consult Apple\u2019s documentation in regard to\u00a0their specific use cases.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you already have an iOS app, it makes sense to leverage existing iOS code when making the transition to a tvOS app. Also, if your business needs require\u00a0creating a game or iOS-style app, it makes sense to develop a c<\/span><span style=\"font-weight: 400;\">ustom app for Apple TV<\/span><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, if you are only going to showcase video or audio content and\/or your available talent pool mostly consists of\u00a0web developers, it would make sense to take the <\/span><span style=\"font-weight: 400;\">TVML app<\/span><span style=\"font-weight: 400;\"> approach instead. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Now that you are well-versed on the two approaches for\u00a0building an Apple TV app, we will focus the remainder\u00a0of this article on design and UX considerations for tvOS apps. <\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Design and UX Considerations<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">We\u2019ve just covered development considerations for building an Apple TV app. Now we will look at the d<\/span><span style=\"font-weight: 400;\">esign and UX considerations<\/span><span style=\"font-weight: 400;\"> that go into creating such apps. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Unlike developing for the iPhone and iPad \u2014 or even the <a title=\"How to Develop Apple Watch Apps\" href=\"http:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/\" target=\"_blank\">Apple Watch, which provides a more intimate user experience<\/a> \u2014\u00a0designing for the Apple TV is the exact opposite.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Unlike other Apple devices, where Apple provides the complete hardware, the Apple TV is a box that connects to third-party televisions, which each have\u00a0different screen sizes and resolutions. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">tvOS apps are meant to be shared in a\u00a0room with others, so the user experience is less private but potentially more engaging (and certainly apps can take advantage of\u00a0greater visual real estate), in comparison to other Apple devices. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">With that in mind, there are quite a few <a title=\"Apple Human Interface Guidelines for tvOS\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/\" target=\"_blank\">considerations worth noting as a designer<\/a>, when working on your tvOS app.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Focus and Control<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Unique to the Apple TV, users control and interact with the platform through their Apple TV remote. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">With the new Siri-powered remote, users are able to use <\/span><span style=\"font-weight: 400;\">gestures to navigate the home screen icons in a grid<\/span><span style=\"font-weight: 400;\">, as well as navigate specific apps horizontally and\u00a0vertically.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.27-PM.png\" rel=\"attachment wp-att-7197\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"339\" class=\"alignnone size-full wp-image-7197\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.27-PM.png\" alt=\"Apple TV App: Focus and Control\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.27-PM.png 602w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.27-PM.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/a><\/p>\n<h3><span style=\"font-weight: 400;\">Emphasizing Focus<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">As obvious as this might sound, when you go through each UI element within your app, you need to emphasize focus.<\/span><\/p>\n<p>The other iOS platforms don\u2019t show a cursor or any focused element because you don\u2019t have a mouse, but rather use your fingers. In contrast, on the Apple TV, users need to keep track of their active or current selection.<\/p>\n<p>Apple has decided the best UX approach is their Focus Engine, which we discussed above.<\/p>\n<p><span style=\"font-weight: 400;\">An icon or image is in focus when the current item is all of the following:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">highlighted;<\/span><\/li>\n<li><span style=\"font-weight: 400;\">elevated in depth; and <\/span><\/li>\n<li><span style=\"font-weight: 400;\">sways in response to a light circular gesture on the touch interface of the remote.<\/span><\/li>\n<\/ul>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.51-PM.png\" rel=\"attachment wp-att-7196\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"337\" class=\"alignnone size-full wp-image-7196\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.51-PM.png\" alt=\"Apple TV App: Emphasizing Focus\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.51-PM.png 600w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.56.51-PM.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>As Apple explains in its\u00a0<a title=\"Apple Human Interface Guidelines for tvOS\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/\" target=\"_blank\">documentation<\/a>:<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">&#8220;Parallax is a subtle visual effect used throughout the system to convey depth and dynamism when an element is in focus. Through image layering, transparency, scaling, and motion, parallax produces a 3D effect with a sense of realism and vitality.&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It&#8217;s important that you\u00a0make the selected element stand out, as shown in the illustration above, by not only having it elevated but also including\u00a0a caption beneath, thereby adding extra bits of information that separates the active element from the inactive elements. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">As we mentioned earlier, adapting elements to conform to the <\/span><span style=\"font-weight: 400;\">Focus Engine<\/span><span style=\"font-weight: 400;\"> of Apple TV is generally fairly straightforward. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">When you use the common UIKit elements, such as UIButton and grid-layout items like UICollectionViews, you inherit those behaviors for free. But if you add any custom UI elements, then you will need to make an extra effort to conform to Apple&#8217;s guidelines.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You are able to add additional custom animations and effects programmatically, but doing any unnecessary animation is discouraged, as a general UX principle. Instead, be sure to follow the points mentioned above and ensure the images are crisp and custom animations are subtle and fluid. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Navigation within your app should make logical sense and be intuitive. Most importantly, <\/span><span style=\"font-weight: 400;\">do not display a cursor. T<\/span><span style=\"font-weight: 400;\">his is a big no no and goes against the F<\/span><span style=\"font-weight: 400;\">ocus Engine<\/span><span style=\"font-weight: 400;\"> philosophy of the Apple TV.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Icons and Images<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">As designers probably already\u00a0know, when working with icons and images on iOS, you have to cater for @2x and @3x. But with the Apple TV, you will be working with @1x image assets. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">You must\u00a0ensure your icons are vivid and representative of your app and brand and follow the general icon design principles you would use\u00a0for iOS (i.e don\u2019t use words or make the design feel cluttered).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Working with <\/span><i><span style=\"font-weight: 400;\">parallax icons<\/span><\/i><span style=\"font-weight: 400;\">, you need to create a <\/span><span style=\"font-weight: 400;\">layering of your images<\/span><span style=\"font-weight: 400;\">\u00a0in order to be able to create a sense of depth and vitality. Visually, this will enable users to see your icons pop out and tilt as they\u00a0focus on them. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">This is not only a suggestion but a requirement from Apple. So it\u2019s important you consult <a title=\"Apple Human Interface Guidelines for tvOS Icons and Images\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/icons-and-images\/\" target=\"_blank\">Apple\u2019s guidelines for tvOS icons and images<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You should also take\u00a0a look at <\/span><span style=\"font-weight: 400;\"><a title=\"Apple tvOS Design Resources\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/resources\/\" target=\"_blank\">some of the resources that Apple provides,<\/a>\u00a0including<\/span><span style=\"font-weight: 400;\">\u00a0tools and PSD templates that will make the design process easier.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">The Top Shelf<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The <em>top shelf<\/em> on the Apple TV home screen is a great place to showcase your app in a graphically and contextually rich manner. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">This is the space that will encourage existing\u00a0and\u00a0new users to check out\u00a0your app, whether it\u2019s the next episode of a series (in the case of a video or audio app) or the last house they were inspecting (for a real estate app like Zillow).<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.38-PM.png\" rel=\"attachment wp-att-7195\"><img loading=\"lazy\" decoding=\"async\" width=\"599\" height=\"336\" class=\"alignnone size-full wp-image-7195\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.38-PM.png\" alt=\"Apple TV App: The Top Shelf\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.38-PM.png 599w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.38-PM.png 300w\" sizes=\"(max-width: 599px) 100vw, 599px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">At a minimum, you are required to provide a static top shelf image when submitting your app. However, you are encouraged to go beyond what\u2019s asked and provide dynamic content that is contextually-refined. <\/span><\/p>\n<h4><strong>Contextual Content<\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">The idea behind providing contextual and dynamic content in the top shelf is that it presents a great opportunity to remind users of what they saw the last time they were in your app. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, you could have\u00a0existing users jump to the last saved position in a game they were playing or go directly to the next episode of a show they are watching.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can even use the Apple TV remote&#8217;s P<\/span><span style=\"font-weight: 400;\">lay button<\/span><span style=\"font-weight: 400;\"> to allow users to immediately start media playback where they last left off or to enter the game at that position.\u00a0<\/span><\/p>\n<p>As Apple explains in its\u00a0<a title=\"Apple Human Interface Guidelines for tvOS Icons and Images\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/\" target=\"_blank\">documentation<\/a>:<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">&#8220;People are familiar with apps they put in the top row of the Apple TV Home screen and use them often. Consider personalizing the experience by showing targeted recommendations in the top shelf, allowing the user to resume media playback, or letting them jump right back into active gameplay.&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As referenced\u00a0in the quote above, the top shelf can also be a way of displaying personalized content. For example,\u00a0if you have a Netflix-style app, you could show the user&#8217;s wish list or top rated movies.\u00a0<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.57-PM.png\" rel=\"attachment wp-att-7194\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"336\" class=\"alignnone size-full wp-image-7194\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.57-PM.png\" alt=\"Apple TV App: Top Shelf Contextual Content\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.57-PM.png 600w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.58.57-PM.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Or, for a game app, you could display scores from the user and their\u00a0friends \u2014something captivating that will likely boost\u00a0<a title=\"Lessons from Facebook's VP of Growth\" href=\"http:\/\/thinkapps.com\/blog\/post-launch\/how-start-startup-growth\/\" target=\"_blank\">user retention<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">From a designer\u2019s perspective, be sure to\u00a0provide enough content to fill\u00a0up an entire row, rather than leaving gaps. (In the previously referenced documentation, Apple <\/span><span style=\"font-weight: 400;\">provides guidelines on the ratios you can work with to best ensure conformity<\/span><span style=\"font-weight: 400;\">.)<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Navigating the UI<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The tab bar takes up the top 140px of the content area and provides a great way for users to navigate to other parts of your app.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Synonymous with tab bars on iOS, you are able to add badges to indicate activity on specific tabs (e.g. number of unread videos).<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.18-PM.png\" rel=\"attachment wp-att-7193\"><img loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"374\" class=\"alignnone size-full wp-image-7193\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.18-PM.png\" alt=\"Apple TV App: Navigating the UI 1\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.18-PM.png 614w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.18-PM.png 300w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Apple recommends that designers use text instead of icons for tab items, not include too many tabs, and choose appropriate colors and names. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, you can implement tables using\u00a0iOS UITableViews\u00a0in order to provide a scrolling experience\u00a0that displays\u00a0large sets of data. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">As shown in the illustration below, you can also use\u00a0<\/span><a title=\"Apple tvOS Split Views\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/ui-elements\/#split-views\" target=\"_blank\"><span style=\"font-weight: 400;\">split views<\/span><\/a><span style=\"font-weight: 400;\">, which makes greater use of large screen real estate.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.34-PM.png\" rel=\"attachment wp-att-7192\"><img loading=\"lazy\" decoding=\"async\" width=\"613\" height=\"372\" class=\"alignnone size-full wp-image-7192\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.34-PM.png\" alt=\"Apple TV App: Navigating the UI 2\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.34-PM.png 613w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.34-PM.png 300w\" sizes=\"(max-width: 613px) 100vw, 613px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Collections is another form of visual structuring of elements, which is well-suited to elements that are not as sequentially-structured. Unlike table views, they\u00a0can be composed of varying-sized elements.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.53-PM.png\" rel=\"attachment wp-att-7191\"><img loading=\"lazy\" decoding=\"async\" width=\"613\" height=\"373\" class=\"alignnone size-full wp-image-7191\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.53-PM.png\" alt=\"Apple TV App: Navigating the UI 3\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.53-PM.png 613w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/06\/03130010\/Screen-Shot-2016-06-02-at-11.59.53-PM.png 300w\" sizes=\"(max-width: 613px) 100vw, 613px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">In their documentation, Apple goes into<\/span><span style=\"font-weight: 400;\"> greater detail about <\/span><a title=\"Apple tvOS Interface Elements\" href=\"https:\/\/developer.apple.com\/tvos\/human-interface-guidelines\/ui-elements\/\" target=\"_blank\"><span style=\"font-weight: 400;\">working with other elements<\/span><\/a><span style=\"font-weight: 400;\">, such as page controls, buttons, alerts, text fields (and search text fields). These resources are definitely worth exploring and understanding. <\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Concluding Thoughts<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Last fall, Apple introduced an exciting new Apple TV iteration that has finally made it\u00a0a fully-fledged third-party developer\u2019s platform. The tvOS framework builds upon the ecosystems established in other Apple platforms, such as iOS and Apple Watch.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this article, we introduced you to the tvOS framework. We also explained the two approaches you can take in regard to\u00a0development, including\u00a0TVML and extending existing iOS apps via\u00a0Swift or Objective-C, as well as the benefits and drawbacks of each approach. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, we\u2019ve explored\u00a0many of the design principles involved in creating a tvOS app to ensure your apps are engaging and conform to Apple&#8217;s UX guidelines. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Being a completely new platform, we are confident that we&#8217;ll start to see new genres of Apple TV apps emerge, based on new use cases\u00a0and\u00a0design trends. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">This is an exciting and pioneering area for designers and developers\u00a0and a platform that Apple will no doubt double-down on, in terms of their efforts and resources. <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is part two of our Apple TV series. In the first post, we explored whether you should build an app for this platform. Now we&#8217;ll explain how to design and develop an Apple TV app.<\/p>\n","protected":false},"author":32,"featured_media":7089,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[30,453,26,56,364,13,243,34,117,578,577,92,194],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apple TV: How to Design and Develop An App<\/title>\n<meta name=\"description\" content=\"In part two of our Apple TV series,\u00a0we explain how to design and develop an Apple TV app.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apple TV: How to Design and Develop An App\" \/>\n<meta property=\"og:description\" content=\"In part two of our Apple TV series,\u00a0we explain how to design and develop an Apple TV app.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/\" \/>\n<meta property=\"og:site_name\" content=\"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/doron.e.katz\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-03T07:00:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-06-03T07:29:52+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"534\" \/>\n\t<meta property=\"og:image:height\" content=\"395\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Doron Katz\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Doron Katz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/\",\"url\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/\",\"name\":\"Apple TV: How to Design and Develop An App\",\"isPartOf\":{\"@id\":\"http:\/\/localhost:8080\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png\",\"datePublished\":\"2016-06-03T07:00:10+00:00\",\"dateModified\":\"2016-06-03T07:29:52+00:00\",\"author\":{\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef\"},\"description\":\"In part two of our Apple TV series,\u00a0we explain how to design and develop an Apple TV app.\",\"breadcrumb\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#primaryimage\",\"url\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png\",\"contentUrl\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png\",\"width\":534,\"height\":395,\"caption\":\"Apple TV: Designing an Apple TV App\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/localhost:8080\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apple TV: How to Design and Develop An App for the Big Screen\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/localhost:8080\/blog\/#website\",\"url\":\"http:\/\/localhost:8080\/blog\/\",\"name\":\"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/localhost:8080\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef\",\"name\":\"Doron Katz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g\",\"caption\":\"Doron Katz\"},\"description\":\"A keen passion for emerging technologies, practices and methodologies, Doron embraces the vision of lean development with continuous customer development. Consultant for various startups, as a Project and Product Manager, with a mobile engineering background in iOS, and over 10 years of professional web development experience.\",\"sameAs\":[\"http:\/\/www.doronkatz.com\/\",\"https:\/\/www.facebook.com\/doron.e.katz\",\"https:\/\/www.linkedin.com\/in\/doronkatz\",\"https:\/\/x.com\/doronkatz\"],\"url\":\"https:\/\/thinkapps.com\/blog\/author\/doron\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apple TV: How to Design and Develop An App","description":"In part two of our Apple TV series,\u00a0we explain how to design and develop an Apple TV app.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/","og_locale":"en_US","og_type":"article","og_title":"Apple TV: How to Design and Develop An App","og_description":"In part two of our Apple TV series,\u00a0we explain how to design and develop an Apple TV app.","og_url":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/","og_site_name":"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more","article_author":"https:\/\/www.facebook.com\/doron.e.katz","article_published_time":"2016-06-03T07:00:10+00:00","article_modified_time":"2016-06-03T07:29:52+00:00","og_image":[{"width":534,"height":395,"url":"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png","type":"image\/png"}],"author":"Doron Katz","twitter_misc":{"Written by":"Doron Katz","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/","url":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/","name":"Apple TV: How to Design and Develop An App","isPartOf":{"@id":"http:\/\/localhost:8080\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#primaryimage"},"image":{"@id":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#primaryimage"},"thumbnailUrl":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png","datePublished":"2016-06-03T07:00:10+00:00","dateModified":"2016-06-03T07:29:52+00:00","author":{"@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef"},"description":"In part two of our Apple TV series,\u00a0we explain how to design and develop an Apple TV app.","breadcrumb":{"@id":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#primaryimage","url":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png","contentUrl":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2016\/05\/01173259\/Screen-Shot-2016-06-01-at-5.32.26-PM.png","width":534,"height":395,"caption":"Apple TV: Designing an Apple TV App"},{"@type":"BreadcrumbList","@id":"https:\/\/thinkapps.com\/blog\/development\/apple-tv-app-how-to-design-develop\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/localhost:8080\/blog\/"},{"@type":"ListItem","position":2,"name":"Apple TV: How to Design and Develop An App for the Big Screen"}]},{"@type":"WebSite","@id":"http:\/\/localhost:8080\/blog\/#website","url":"http:\/\/localhost:8080\/blog\/","name":"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/localhost:8080\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef","name":"Doron Katz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g","caption":"Doron Katz"},"description":"A keen passion for emerging technologies, practices and methodologies, Doron embraces the vision of lean development with continuous customer development. Consultant for various startups, as a Project and Product Manager, with a mobile engineering background in iOS, and over 10 years of professional web development experience.","sameAs":["http:\/\/www.doronkatz.com\/","https:\/\/www.facebook.com\/doron.e.katz","https:\/\/www.linkedin.com\/in\/doronkatz","https:\/\/x.com\/doronkatz"],"url":"https:\/\/thinkapps.com\/blog\/author\/doron\/"}]}},"_links":{"self":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/6082"}],"collection":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/comments?post=6082"}],"version-history":[{"count":60,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/6082\/revisions"}],"predecessor-version":[{"id":7198,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/6082\/revisions\/7198"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/media\/7089"}],"wp:attachment":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/media?parent=6082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/categories?post=6082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/tags?post=6082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}