How To Create a Roku Channel?
Roku TV App is one of the leading streaming players available in the market. It allows users to stream audio/video content via the Internet.
There are 3 main requirements to make a Roku channel:
Original and/or licensed video content (content publishers)
Hosted content available through the Internet (OVP, CDN, etc.)
Built using SDK (Brightscript programming language) / Direct Publisher (JSON/RSS feed)
We’re going to build the app using the SDK as it allows us to do tons of customization and incorporate our own workflow into the app, which cannot be done in the Direct published.
Roku channel Programming Language & IDE
Roku channels are built using Brightscript programming language, which is a proprietary language. We can use the plugin for Eclipse IDE (
installation instruction), which is provided by Roku itself, so we don’t have to bother ourselves by using some other text-editor. The plugin has the ability to deploy your app from eclipse to your Roku TV App and check it directly.
We can start creating a simple channel by modifying the code from the sample channels available
Studio SWEAT On-Demand Roku TV App
The app is built on top of a simple grid screen with tons of customization like custom login screen and multiple categories, with each category added in the background without making the user wait for all the data to be available. With the help of Registry, we store the user’s information and provide a personalized experience.
To get started we thought of creating multiple scenes and switch among them if the user is already logged in. But we found that it’s complex to create multiple scenes. Instead, we went with a single scene that is built using SceneGraph.
The confusing part is when you have many views/dialog/keyboard dialog and you want to switch to a new view, then the older view’s focus and visibility must be set to false. Otherwise, the top view won’t be able to receive any action even though you would be able to view them.
Another quick fix is, when you’re deep into your component tree and want to show a dialog, for example, then m.top.dialog might not work, instead try m.top.getScene().dialog = dialog.
In Roku your HTTP requests cannot be made on the main thread, you need to create a TASK for it to perform the HTTP call and receive the data. The same applies when accessing
. The response obtained from the HTTP request can be structured with inbuilt functions, for JSON objects we use roRegistrySection and for XML objects you need to create ParseJSON() variable. To learn more about HTTP requests check roXMLElement here.
Overall there were some challenges along the way and exciting to learn & try something new. You can install the StudioSWEATOnDemand channel from
here. Good or bad, we’d love to hear your thoughts. Find us on Twitter (
@Bitcot) or check my website.