Roku SDK Documentation : Top Development Tips for the Roku Platform

  • Make sure you capture all of the events sent by the roVideoScreen or you may miss important playability information.

  • Know the remote control codes for special screens:
    • Dump Core: Home 5x, Up, Rew 2x, FF 2x
    • Debug Info on screen: Home 5x, Rew 3x, FF 2x
    • Channel Version Info: Home 3x, Up 2x, Left, Right, Left, Right, Left
    • Developer Settings Page: Home 3x, Up 2x, Right, Left, Right, Left, Right
  • The Developer Settings Page is necessary for enabling developer mode on your box.
  • All file paths are prefixed by the device name and a colon: pkg:/filename.txt. See File System for more information.
  • Always use a screen facade object when launching your application so that it appears to the user that your channel launches immediately and avoids screen flicker when exiting. See Working with Screens for more information, see the simplevideoplayer sample application for a commented implementation of the technique.
  • When using rendezvous style registration and account linking, be sure to store the linking information in the device registry and not on your servers. We require that users are able to do a "Factory Reset" and be confident that no personally identifiable information is associated with the device. This is not possible if you have saved permanent serial number information on your servers.
  • There are a limited number of video content and streaming formats supported on the Roku Streaming Player. See Audio and Video Support for complete information on the supported formats.
  • We only support .wma and .mp3 audio files in the audio player.
  • Be sure to use a unique key for each application you publish and reuse this key each time you update your application using the "rekey" option. This ensures that all versions of your application will have access to the same registry data and avoid causing users to re-link after an update.
  • When using the slide show component, a high resolution image may take a while to download. A good trick to provide quick feedback to the user is to put an image in your package (so it's not downloading) that may have your logo, and informs the user that the slideshow is "Retrieving…". This slide could be the first slide in your slideshow so that feedback to the user is instant, and the slideshow never appears "hung".
  • We require that your web servers support range requests. If they do not, you may run into content that is not playable, or large images that do not display. The data will appear as a corrupted file format to our components, as the first block may be resent by the web server when we expect data at a particular range or offset.
  • The screens are displayed in a LIFO (stack) order. If this behavior is causing your screen to flicker (perhaps you wanted to pop two screens after you are done with the current one) there is a Close() method in the screen interface of all the screen and dialog components that deletes the screen out of the display stack. An example might be coming out of a Registration or Search page to a Springboard screen. From the Springboard screen, you might want to exit to your main screen, not the registration screen or search screen. The following is an example of how this would be coded:

Example: Closing Screens to Avoid Flicker

 

searchScreen = CreateObject("roSearchScreen")
REM in a real app, you would setup this search screen...
searchScreen.show()
REM screensToPop is a set of screens that will be popped
screensToPop = CreateObject("roArray", 1, true)
screensToPop.push(searchScreen)
REM real app code processes the searchScreen here
REM and eventually decides it's time to jump to a
REM springboard.
scr = CreateObject("roSpringBoardScreen")
REM in a real app your code to
REM process your Feed and setup scr goes here
REM before calling show() on your scr, close the
REM previous screens on the display stack
if screensToPop <> invalid
for each screen in screensToPop
screen.close()
end for
screensToPop = invalid
end if
scr.show()

Attachments:

Channel_Checklist_v_1_14.xlsx (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
architecturecrppd.png (image/png)
fig5.png (application/octet-stream)
fig4.png (application/octet-stream)
fig3.png (application/octet-stream)
fig2.png (application/octet-stream)
fig1.png (application/octet-stream)
architecture.png (application/octet-stream)