Apple TV support
Apple TV is not currently a supported Tilecast Player platform. There is no Tilecast Player app for tvOS, so an Apple TV can’t be added as a Tilecast screen today.
The main difference is how Tilecast renders content. Tilecast’s existing Players share a web-based renderer, while tvOS does not support web views in third-party apps. Supporting Apple TV would therefore require a native renderer, or a new rendering format that both web-based and native Players can understand.
Current Player support
Section titled “Current Player support”Tilecast Player currently supports:
- Android TV, Google TV, and Fire TV devices through the Android Player.
- 64-bit x86_64 Linux systems through the Linux Player.
- Linux systems using Tilecast Edge, which is currently a preview and isn’t yet recommended for production screens.
See the Player capability matrix for a comparison of supported features.
Apple devices can also interact with Tilecast without acting as Players. For example, an iPhone, iPad, or Mac can present to a supported Linux Player using AirPlay Present.
Why tvOS needs a different Player
Section titled “Why tvOS needs a different Player”Tilecast uses a shared renderer across its Player platforms. Images, video, Layouts, transitions, Widgets, and plugin Widgets are rendered using the same web code wherever possible.
The platform-specific Player handles the parts around that renderer, including pairing, communication with the Tilecast server, local content management, and integration with the operating system.
Today, that renderer runs in:
- Electron on the Linux Player.
- WPE WebKit on Tilecast Edge.
- Android WebView as the Android Player moves to the shared runtime.
Keeping rendering shared is important to Tilecast’s platform model. A Widget can be implemented once and behave the same way across Players, and rendering fixes don’t need separate implementations for each operating system.
tvOS is different because Apple lists web views as unsupported on tvOS. Apple’s current tvOS development model uses native interfaces built with SwiftUI or UIKit.
As a result, the existing Tilecast renderer can’t simply be packaged as a tvOS app.
What about TVML or JavaScriptCore?
Section titled “What about TVML or JavaScriptCore?”tvOS includes other technologies that can sometimes look similar to parts of a browser, but they don’t provide the environment Tilecast’s renderer expects.
TVML was designed for template-based Apple TV applications rather than general HTML rendering. Apple deprecated TVML and TVMLKit starting with tvOS 18 and recommends SwiftUI or UIKit for new tvOS applications.
JavaScriptCore can execute JavaScript, but it doesn’t provide a browser DOM, CSS layout engine, HTML media elements, or the other browser APIs used by Tilecast Widgets.
These technologies could be useful inside a native Player, but they don’t provide a direct way to run the current web renderer.
What tvOS can support
Section titled “What tvOS can support”Much of the Player outside the renderer maps well to tvOS.
A native Player could use Apple’s media frameworks for image and video playback, connect to a Tilecast server using the existing Player protocol, and use Bonjour for local-network discovery.
tvOS also supports managed deployments. Supervised Apple TVs can be configured through MDM and Automated Device Enrollment, including Apple’s Single App Mode. That makes Apple TV suitable for dedicated signage deployments from a device-management perspective.
Content storage works differently from the existing Players. tvOS is designed around recoverable downloaded content and can purge an app’s cached files when storage is needed. A Tilecast Player could cache media for playback, but it would need to handle those files disappearing and download them again when necessary. Offline playback therefore couldn’t assume that a large downloaded content library will remain on the device indefinitely.
Features that would need different implementations
Section titled “Features that would need different implementations”The main work is not pairing an Apple TV with Tilecast. It is deciding how Tilecast content should be rendered once it gets there.
| Feature | tvOS considerations |
|---|---|
| Images and video | Can be rendered with native Apple frameworks. |
| Layouts | Tilecast would need a native implementation of the Layout renderer or a shared platform-independent layout format. |
| Widgets | Current Widgets use web technologies. They would need a native representation or another renderer that works on tvOS. |
| Plugin Widgets | Plugin Widgets use the same web Widget model, so the same limitation applies. |
| Website content | Website Apps depend on an embedded browser. tvOS does not provide the web view used by the other Players. |
| YouTube | Tilecast currently uses YouTube’s embedded web player. The existing integration therefore doesn’t map directly to tvOS. |
| Display Control | Tilecast has not identified a public tvOS API that allows an app to issue HDMI-CEC commands, so the existing Display Control implementation could not be carried over directly. |
| Player updates | A tvOS app would normally be updated through the App Store or managed deployment rather than Tilecast’s self-update system. |
A tvOS Player would not necessarily need to support every one of these features before it could be useful. Tilecast already has capability reporting so the server can determine which types of content a Player supports.
Possible approaches
Section titled “Possible approaches”There are several ways Apple TV support could fit into Tilecast’s architecture.
Native Player with a smaller feature set
Section titled “Native Player with a smaller feature set”A first tvOS Player could support the content that maps cleanly to native APIs, such as images, video, and a subset of Layouts or Widgets.
The Player would report those capabilities to the server so unsupported content could be rejected instead of being sent to a screen that can’t display it.
This would make Apple TV useful sooner, but it would also mean that some Tilecast content behaves differently depending on the Player platform.
Native implementations of Widgets
Section titled “Native implementations of Widgets”Built-in Widgets could be implemented separately for tvOS using SwiftUI or another native framework.
This could provide a close match to the existing Player, but the web and tvOS implementations would need to remain in sync. It also becomes more difficult for plugin Widgets, because plugin authors currently only need to provide the web implementation.
Web content
Section titled “Web content”Website Apps are a separate limitation because their content is the web page itself rather than something Tilecast controls.
The same applies to services such as YouTube when playback depends on an embedded web player.
One possible architecture would be to render that content elsewhere and stream the result to the Apple TV. That would make it possible to display more types of content, but it would introduce a server-side rendering service and make those items dependent on a reliable connection to that service.
For that reason, web content support would likely remain separate from the work needed to build a native tvOS Player.
Contributing
Section titled “Contributing”Tilecast is open source, and Apple TV support is the kind of work that benefits from outside input. A tvOS Player would change how Widgets are built, so a conversation before any code is useful. If you have tvOS experience, a managed Apple TV fleet to test on, or a view on which approach fits best, open an issue on GitHub to start the discussion.
To work on Tilecast itself, see the developer guide and the contributing guide.