App Requirements
What kind of web apps work on Senza
This page summarizes what kind of apps can run on the Senza platform, and gives you an idea of the level of effort that may be required to adapt your app in certain ways.
If you already have an HTML5 app that's designed to run on a television, the changes required are relatively straightforward. If you're starting with a web app that's designed to run on a desktop or mobile device, you'll have a little more work to adapt your app.
Key Points
At a high level, your app will run best on Senza if it:
- Is written using HTML5, JavaScript and CSS
- Is intended for viewing on a TV screen
- Has an interface designed for full HD resolution (1920 x 1080)
- Supports remote control navigation with up, down, left, right, OK and back buttons
- Plays streaming video using DASH manifests, MP4 fragments, H.264 video and AAC audio
- Supports Widevine digital rights management for protected content
The rest of this page captures more details on these requirements.
HTML5
The Senza platform runs your app in a Chromium web browser in the cloud. You can depend on the version of Chromium being relatively recent; the current version is v124 as of this writing. That means you can use all the latest features of Chrome and also use Chrome on your computer for developing the user interface.
If your app is written using native technologies such as Android or tvOS, you'll need to consider reimplementing it using HTML5 web standards.
JavaScript
The documentation, sample apps and tutorials use JavaScript ES6 programming techniques. This lets you take advantage of modern syntax including classes, modules, inline functions, await/async, try/catch, and more.
If your app was developed using JavaScript ES5, you can still integrate with the client library, but the syntax will be slightly different. See the banner-es5 and tears-es5 sample apps for examples using the ES5 syntax.
Installation
The preferred way of integrating with the client library is installing it with NPM, importing classes from the module, and bundling your app with webpack. Alternatively, you can import the client library using a script tag, which is simpler, compatible with ES5 and does not require bundling. See the Installation page for more details.
Viewport
Senza apps are designed to be viewed on a television at HD resolution. The viewport is fixed at 1920 x 1080 pixels. User interface elements should be sized so that they are legible at a ten-foot viewing distance.
If your web app was designed for computers or mobile devices and is responsive (resizes itself depending upon the size of the window or screen), try stretching a window on your computer to 1920 x 1080 pixels to get an idea of how it would look on a television. You can also try running it in the Simulator.
Remote Control
Viewers interact with Senza apps using a remote control, rather than a mouse and keyboard or a touch interface. If you are adapting an existing app that was not designed for a television, you'll want to consider adapting the navigation paradigm to support remote control based navigation. See Remote Input and the Remote Control series of tutorials for more details.
Text Entry
Senza uses the remote control for interaction, so viewers do not have a way of entering text by typing on a keyboard. As an alternative to typing a username and password, you may consider Device Authentication or QR Code Authentication. For use cases like search, consider using alternatives like Voice Input.
Your app could also implement an on-screen keyboard, although this does not provide the best user experience. When testing your app, you do have the option of using the Remote Debugger to enter text if needed.
Video
Senza supports streaming video to devices using DASH manifests, a media container with MP4 fragments, H.264 video encoding, and AAC audio encoding, and subtitles in TTML or SMPTE-TT, using the TLS1.2 cipher suite (AES-128 CBC). Some additional configuration might be required in your CDN to support HTTPS encrypted streams. It does not currently support HLS-TS transmission streams. See the Content Media Format reference documentation for further details.
Protected Content
The Senza remote player uses the Widevine Content Decryption Module to decrypt encrypted content. Content protected with Widevine should not enforce a link-protection policy beyond HDCP 1.4. See the the Protected Content reference documentation as well as the Protected Content tutorial.
Geolocation
Senza runs your app on a browser in the cloud. If your app uses geolocation based on the client IP address for localization or access restrictions, it may determine that the user is at a cloud provider's data center. You can update your app with just a few lines of code to use the actual IP address of the viewer's device instead. See the Device Manager class documentation and Geolocation tutorial for details.
Once you have done that, you can connect to a VPN service on your computer and run your app in the Device Simulator if you want to test how your app would appear in another country.
Testing Your App
When you're ready to test your app, follow the instructions in the Quick Start section. The Try Running Your App page walks you through the process of running your app in the Device Simulator. The Testing Your App page covers how to check what works and what doesn't, and helps you make a development plan.
Updated 4 months ago