This document specifies the requirements for Whale TV Applications.
It is primarily aimed at app developers and owners. The requirements mentioned here refer only to issues which impact the Whale TV experience, which we of course, want to be as good as possible.
|Category||ZEASN Requirement ID||REQUIRED||Requrtements||Description|
Deliver responsive performance.
|Deliver responsive performance.This is a subjective impression, quantified by sub-requirements ZN-PER-0100 to ZN-PER-0120|
|Mandatory||Observe navigation when navigating app interface||Navigation can move accordingly and will not stop moving.|
|Mandatory||Switching pages||Pages move logically.The user should be able to enter a new page or leave the current page by clicking button or back button in the App.|
|ZN-PER-0100||Mandatory||App launches within 8 seconds.||On first accessing the App, the app should load within 8 seconds (on average, with a 2Mbit connection, measured from the moment the remote control is pressed until the moment the App is fully loaded).|
|ZN-PER-0200||Mandatory||Action within app page should respond within 4 seconds.||Every action taken by the user should provide a visible response within 4 seconds (on average, with a 2Mbit connection, measured from the moment the remote control button is pushed). This visual response does not need to show the final result of the action.|
If some data needs more than 2 seconds to load, you could show a 'busy' icon.
|ZN-PER-0300||Mandatory||A loading icon should be shown before the start of a video.||If the App contains video content, a loading indicator shall be present and shown until the start of each video also when the video goes to buffering state on performing Fast forward or Rewind and Next or previous playback operation.|
|Interaction||ZN-INT-0000||Mandatory||All App pages should provide simple and logical interaction. User is able to access all functions with remote control.|
Your App should be simple and logical to interact with; users should be able to access all functionality without any problem on using the remote control. As this requirement is somewhat subjective, it is accompanied by a number of more exact sub-requirements.
User is able to access all functions with remote control. If some buttons in the App can be clicked with the mouse, it should also be operable through the remote control.
|ZN-INT-0100||Mandatory||RC navigation keys are working.||Navigation on the remote control includes: up key, down key, left key, right key, and back key and OK key (enter key). Pressing these keys is the correct response of the App.|
|Mandatory||RC numpad keys are working.||There are number keys from 0 to 9 on the remote control. If you enter content in the App, they should work.|
|Mandatory||RC play and pause buttons are working.||During video playback, in addition to the App's own pause and play buttons, the pause and play buttons on the remote control should also be able to pause and play the video.|
|Mandatory||RC back key is working.||When the user is on the homepage of the App, using the BACK button should always result in exiting the App and getting back to the Whale TV Homescreen.|
|Mandatory||RC color keys are working.|
On the remote control of each platform, most of them have red key, green key, yellow key and blue key.
App can call these color keys to realize the functions they need.
|ZN-INT-0110||Optional||Supports pointer navigation using mouse.||All app pages can navigate using mouse.Whale TV platforms support pointer devices. Therefore your Apps should also support pointer navigation. |
This means the whole App, apart from text input, can be accessed using only a mouse.
|ZN-INT-0120||Mandatory||In focused content is clearly highlighted.||In focused content is differentiate clearly from non-focused contents.The use of spatial navigation is preferred for Whale TV platforms. For navigation to be logical (requirement ZN-INT-100) the selected element should always be clearly distinct from non-selected elements through a clear system of highlighting (applying a specific color/shape style format or animation to the selected element). The same (or a different) highlighting system should also be used with pointing devices.|
|ZN-INT-0130||Mandatory||On initial load of the app, in focus content should be clearly highlighted.||When the App is loaded an initial focus should always be clearly visible.|
If the App contains content which is GEO-Blocked this should be made clear to the consumer using a message indicating that the content is not available for the country the user is in.
Message appears for app is not avaliable for the country user is in.
Message appears for content that is not avaliable for the country user is in.
|ZN-INT-0150||Mandatory||Content in minimum languages|
Text heavy apps should have minimum languages English, Russian, German, French, Italian, Spanish and Portuguese.
Text light apps (like for instance games without ambiguous items) can be offered in English.
|ZN-INT-0200||Mandatory||On the homepage of the app, there should always be a way to exit the app.||When the homescreen of the app is visible there should be a way to close the app again, by pressing RC_BACK, or using the remote EXIT function. Anyways the app should always be able to be closed.|
|Mandatory||Using RC back key on the internal pages (except homepage) returns to previous page.||When users use the App, they enter different pages. Users who use the RC back key on any page (except the home page) should return to the previous page.|
|ZN-INT-0210||Recommended||Using Smart TV On-Screen Keyboard (OSK)|
Next to multi-tap functionality, you can call the Smart TV On-Screen Keyboard (OSK) on all compatible devices. This keyboard is invoked by pressing OK in the input field or textarea. Developing your own OSK is highly discouraged.. When doing so using an input field is still mandatory and it should allow all default behavior (Smart TV OSK, multitap, HID keyboard support). Additionally your OSK is required to support pointer devices and should be shown when the focus lands on the input or textarea element. The user should also be allowed to navigate from the input field to the OSK and back, so that he or she can choose wether to choose your OSK for text input or standard provided functionality.
Navigate from the input field to the OSK and back.
Text area have visible cursor displayed to enter text.
Using RC left or right navigation key moves backward/forward respectively.
|ZN-INT-0230||Mandatory||Font size should be at least 18 px.||To make sure the texts on the App are readable from a distance of 10ft the font size which is used should be at least 18px.|
|ZN-INT-0270||Mandatory||Back key in the input field should clear the text.|
Back key in the Input field should clear the text entered (One character at a time) and when no characters is no action should be performed.
Note:Default browser behavior of back should not be prevented.
|ZN-INT-0280||Mandatory||App registration mandatory fields should clearly mark with asterisk symbol.||App registration mandatory fields should clearly mark with asterisk symbol.|
|ZN-INT-0290||Mandatory||Sensitive information should be encoded.||When a user enters sensitive information (such as a password), the App should encode it instead of displaying it in plain text.|
|ZN-INT-0310||Mandatory||Login and logout options|
When a login system is available in the app, logging out shall be possible. If app supports automatic login systems then when user credentials are changed, these shall be processed and saved well for subsequent entry to the app.
Note: On entering app there should be clear visibility on information if user is logged in or logged out.
Clear visibility to identify if user is logged in or logged out.
|ZN-INT-0320||Mandatory||App needs to provide secure login if it has in-app payment.||When an app has in-app payment, or requires secure login, the shall be hosted on a https URL.|
|ZN-INT-0400||Mandatory||Log in and log out function combined with device pairing should work as expected.||App should provide proper messaging when user accounts need to unpair the paired devices, or notify the user if automatically done.|
|ZN-INT-0500||Mandatory||In the search page, the result of letter entered is corresponding to the letter pressed.||Search result is correspond to what is entered.In the search page, the result of letter entered is corresponding to the letter pressed.|
|Mandatory||Using voice to input search result||Successfully search result|
|Mandatory||Observe input character||Check if there is conflict between app keyboard and device keyboard.The characters entered by the user in the ipnut box of the App should be visible and displayed on the screen.|
|Mandatory||Input long character or special characters||Pop-up for cannot search for special characters|
|Visibility||ZN-VIS-0000||Mandatory||No scrollbar when navigating the page.||App content should match the screen size, can not use scrollbar|
|Mandatory||Content fits screen resolution||Content fits screen resolution|
|ZN-VIS-0100||Mandatory||Content must have enough contrast to be "readable".||Content must have enough contrast to be "readable".|
|Mandatory||Contrast of the text.|
|Mandatory||Contrast of the focused highlights.|
|Media||ZN-MED-0000||Mandatory||Media playback should play smoothly.||All used media in an App shall play fluently. No unexpected behavior can be seen by users on a 2mbitline or better such as: Delays,Freezes, Hiccups, Lipsynq, Buffering while already started playing or Scrambling.|
|Mandatory||Purchased (Full Version) video playback||Smooth playback, high resolution. Switching video will still have high quality video playback.|
|Mandatory||Continue playback from last stop point||If the video exits midway through playback, when the video is played again, it should continue to play from the time it stopped when the video was last exited.|
|Mandatory||Oberserving playback||No blackscreen, no playback error, continue video image, lagging of playback, blur or shaking of image|
|Mandatory||Playback audio||Audio playback normally|
|ZN-MED-0050||Mandatory||All used media in an App shall be able to play until the end||All used media in an App shall play until the end. Regardless of the duration and the filesize.|
|ZN-MED-0100||Mandatory||Playback options in an App are obligatory||Playback options in an App are obligatory; by enabling the playback keys on the remote and by implementing these options in the App itself.|
|Mandatory||During playback, press app interface fast forward/rewind/pause buttons||During video playback, in addition to the App's own fast forward/rewind/pause buttons, the fast forward/rewind/pause keys on the remote control should also be able to forward/rewind/pause the video.|
|Mandatory||RC and App itself's play key is working.|
|Mandatory||RC and App itself's pause key is working.|
|ZN-MED-0200||Mandatory||App full screen option is working.||Full Screen mode is visualized by the Full Screen button in the App itself.|
|ZN-MED-0300||Mandatory||Leaving full screen mode.|
Leaving Full Screen mode is done by pressing RC_Back or is made possible via a visualized option in the App itself. When RC_Stop is pressed, Full Screen mode is also cancelled. All RC keys may cancel full screen.
Exception: If your app uses full screen video mode as background of the app the RC_Stop or the visualized play control option can function as a pause instead of a stop.
RC back key leaves full screen mode.
RC stop key leaves full screen mode.
|ZN-MED-0400||Mandatory||After playback is done, the app returns to the previous page.|
After playback is done, the app returns to the previous page.
If Video supports playing in both PIP and Fullscreen mode. If app is playing video in PIP mode during finished state of video, App should let user replay or select any other video for playback from available playlist. If video is playing in full screen mode during finished state then app should redirect back to page where new video can be selected for played back.
|FUNCTIONAL||ZN-FUN-0100||Mandatory||Do not use mix content HTTP/HTTPS||This is a security breach according to W3C standard. By default, browsers are not allowed to call http resources in https. If the HTTPS page includes content encrypted by a plain-text HTTP connection, the connection is only partially encrypted: non-encrypted content can be hacked by the sniffer and modified by a man-in-the-middle attacker, so the connection is no longer protected.|
|ZN-FUN-0200||Mandatory||Do not use hover CSS selector during spatial navigation||Hover selector is not supported across different browsers and browser versions|
|ZN-FUN-0300||Recommended||Do not use window.close, or verify if it's avialable. If not, use alternative like window.history.go(-X)||Only officially supported for HBBTV|
|ZN-FUN-0400||Mandatory||Hide the control element (Playback controls), as they cannot be navigatednavigation||"control" attribute shows a play UI for all HTML5 media element. However these items can not be accessed/selected.|
|ZN-FUN-0500||Mandatory||Shadow dom in general||This is a limitation. HTML5 control element is one of Shadow DOM|
|ZN-FUN-0600||Mandatory||Do not use window.navigate||Not a W3C Standard. Replace with location.assign|
|ZN-FUN-0700||Mandatory||Do not use window.attachEvent||Replace with window.addEventListener|
|ZN-FUN-0800||Mandatory||Direct DOM access is not supported||Please use object ID to access any dom element Ex: document.getElementById()|
|ZN-FUN-0900||Mandatory||Using SRC attribute in Video/ audio tag ( HTML5 ) is not supported||As per W3C standard always use source tag to add media sourch path and type|
|ZN-FUN-1100||Mandatory||Use of content Type "application/CE-HTML+XML" will not be supported. Use HTML instead.||Use of content Type "application/CE-HTML+XML" will not be supported. Use HTML instead.Use for generic HTML5 -> "text/html"|
|ZN-FUN-1200||Mandatory||Use of "Keypress"event will not be supported||Many platforms now do not support keypress events. If the app only uses keypress, the device will not respond properly. It is recommended to use keydown event.|
|ZN-FUN-1300||Mandatory||Make use of VK_ constants|
Smart TV devices can have different key codes for different device. That’s why Smart TVs came with the VK_ constants usage. So please do not check for keycode values, but we should check if the event keycode equals a VK_ constant, like for example VK_BACK
|ZN-FUN-1400||Mandatory||Use PreventDefault() function on keydown event|
If PreventDefault() function is not working properly all the times for all devices on all different events, that’s why the common event should be used, which is keydown.
|ZN-FUN-1500||Recommended||Key input behaviour can be done using the TV virtual keyboard, or the remote control keyboard. There for always better to use the HTML input field, and let the TV UI handle the text entry.||Some app providers make their own text or digit labels, but it will cause a bad key input behaviour. The best key input behaviour can be done using the TV virtual keyboard, or the remote control keyboard. There for always better to use the HTML input field, and let the TV UI handle the text entry. If that is the case a consumer will have a more generic way of inputting text across different apps.|
|ZN-FUN-1600||Mandatory||Changing video object or video tag type by destroying the object and re-creating it.||Changing video object or video tag type without destroying it in the DOM can cause issues on Smart TV devices. It’s better to initialize a video object again if you want to change the type.|
|ZN-FUN-1700||Mandatory||Use UI safe area, and stick to 1280x720||Browser generated scrollbars was a common issue in the past, but not anymore as most of the app providers now how that works nowadays.|
|ZN-FUN-1800||Recommended||Provide good trick mode options for consumers.||Good examples. App can seek, but additionally it divides the video content into 10 parts, wants you press any key a UI popup up where you can seek, but it will also provide you 10 digits option, if you press 5, you go halfway the content, very convenient behaviour. Or they provide small images of the different timestamps from which you can seek, let’s call that sort of chapter seeking. Very nice for a consumer, but it requires you to have the content. Trick modes can be done using position seek or speed seek depending the technology.|
|ZN-FUN-1900||Mandatory||No specific manufacturer references visible in source code||App and source code URL’s are not allowed to contain text referring any of the manufacturers offering the Smart TV platform. In fact these URL’s are not allowed to contain the text or reference to 'Philips', 'Sharp', 'Bang & Olufsen' or any future manufacturer offering the Smart TV platform. We advise to use 'smarttv'.|
No specific manufacturer references visible in frontend
App frontend sections and sub sections are not allowed to contain the text or reference to 'Philips', 'Sharp', 'Bang & Olufsen' or any future manufacturer offering the Smart TV platform.