As announced in the special event yesterday, the SDK is based on iOS and will be very familiar to most Apple platform developers. There are, however, some differences: functionality from iOS frameworks that is not available on tvOS, as well as a handful of new frameworks specifically suited to the needs of “TV apps.”
The results [for
__TVOS_PROHIBITED] are a doozy! But many of the marked items simply wouldn’t make sense on Apple TV, like mucking with the UIStatusBar, are marked as prohibited. There are other tags too, such as
__TVOS_UNAVAILABLE, which presumably denotes that technologies that Apple would like to provide but hasn’t yet, and
__TVOS_DEPRECATED, which blessedly does not yet match any API provided in the tvOS SDK.
Webviews are the duct tape of the mobile world. I’d estimate that 50% to 80% of the major apps out there use webviews somewhere within their apps. Apple’s Mail app uses webviews for for your email messages, because webviews can style and render the content very efficiently.
For a lot of companies, the absence of webview support on tvOS is going to be painful. It’s going to require custom rewrites of those those web-based widgets and views in either native code or TVML, just to support the AppleTV.
This is a big deal, and many people see it as a wise choice on Apple’s part: by forbidding the use of web technology, they will encourage app developers to design natively for Apple TV. On iOS, by comparison, a large number of “native apps” that are downloaded from the App Store are in fact only thin wrappers around the same interactive web content that a user would see if they navigated to the company’s site in a browser. Forbidding web views on Apple TV all but guarantees that companies will provide a more tailored experience, designed in the spirit of Apple’s guidelines.
But forbidding web content outright will also be an unnecessary impediment to many developers whose apps are either tastefully implemented with the help of web technology, or whose core functionality is to deliver content — not web sites, mind you — that happens to be formatted with HTML.
The tvOS interaction paradigm presents a unique challenge to developers and designers alike. The new Apple TV pairs a trackpad-like remote with a UI lacking a traditional cursor. As a result, “focus” is the only means by which an app can provide visual feedback to its user(s) as they navigate.
The focus engine will automatically initiate focus updates at appropriate times like app launch or when the currently focused view is removed from the view hierarchy. Developers can also request focus updates, but any requests must be issued through the focus engine. Since only the focus engine can update focus, it’s here that the focus engine most literally takes on the role of bridgekeeper.
When an update cycle begins, the focus engine queries the initiating focus environment for its
preferredFocusedView. If this view is non-
niland focusable, the focus engine will attempt to give that view focus by issuing the aforementioned notification events through the focus responder chain.
Update (2015-09-12): Daniel Jalkut:
Granted, this is a far cry from a fully-functional web view. I’m sure it won’t serve the needs of all developers who currently rely upon
WKWebView, but I expect that in some cases it will be a valuable workaround to the otherwise total omission of support for rendering HTML on Apple TV.
Update (2015-10-04): Benjamin Mayo:
The Apple TV is launching later in October but many of the details about the device remain under wraps. At the announcement, Apple announced that the Apple TV Siri universal search feature will include data from iTunes, Netflix, Hulu, Showtime and HBO. Many had hoped that Apple would be more open with this feature, allowing Siri to incorporate data from third-party services without requiring a special Apple partnership. In a move that will please many, Tim Cook has announced that Apple will offer an API for universal search, after all, via an interview with Buzzfeed.
Stay up-to-date by subscribing to the Comments RSS Feed for this post.