Интеграция адаптированных сервисов
Ministra TV platform позволяет без особого труда интегрировать в себя сервисы, адаптированные для работы на STB.
Интеграция заключается в создании отдельного модуля, добавления иконок для главного меню и добавления имени созданного модуля в список инициализируемых при старте. При этом сам сервис может находиться или в составе middleware, или на удаленном http сервере.
Требования для адаптируемых сервисов
- Поддержка минимум трех разрешений: 720х480 (NTSC), 720х576 (PAL), 1280х720 (720p)
- Корректная обработка выхода из сервиса (использование GET параметра referrer для возврата)
- Оптимизация интерфейса под управление пультом ДУ
Обработка выхода из сервиса
Одним из требований является возможность покинуть сервис и вернуться обратно в Ministra. URL для возврата находится в GET параметре referrer в urlencoded виде, т.е. его необходимо предварительно декодировать.
Получение GET параметров в JavaScript:
var $_GET = {}; function decode(s) { return decodeURIComponent(s.split("+").join(" ")); } document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () { $_GET[decode(arguments[1])] = decode(arguments[2]); });
Код для возврата в Ministra:
window.location = decodeURIComponent($_GET['referrer']);
Пример интеграции
Рассмотрим пример интеграции абстрактного сервиса example.tv. Допустим сам сервис доступен по url http://tv.example.com/index.html
Создание модуля
Создаем файл exampletv.js в папке /c/ с содержанием:
(function(){ // Первый аргумент - подпись под иконкой в главном меню // Третий аргумент - имя файла иконки main_menu.add('EXAMPLE.TV', [], 'mm_ico_exampletv.png', function(){ var params = ''; if (stb.user['web_proxy_host']){ params = '?proxy=http://'+stb.user['web_proxy_host']+':' +stb.user['web_proxy_port']; } stb.setFrontPanel('.'); if (!params){ params += '?'; }else{ params += '&'; } params += 'referrer='+encodeURIComponent(window.location); //window.location = '/' + stb.portal_path + '/external/olltv/index.html'+params; window.location = 'http://tv.example.com/index.html'+params; }, {layer_name : "exampletv"}); // Для корректной работы модуля необходимо указать уникальный layer_name loader.next(); })();
Добавление иконок в главное меню
Необходимо создать три файла иконок с именем mm_ico_exampletv.png, соответствующие трем используемым разрешениям.
Размеры иконок:
- 200x100px - NTSC
- 200x120px - PAL
- 360x160px - 720p
И поместить каждый файл в папку соответствующую разрешению:
- NTSC - каталог /c/template/<theme_name>/i_480/
- PAL - каталог /c/template/<theme_name>/i/
- 720p - каталог /c/template/<theme_name>/i_720/
Для совместимости с механизмом загрузки модуля создаем еще три пустых css файла в /c/.
- exampletv.css
- exampletv_480.css
- exampletv_720.css
Добавление модуля в список инициализируемых
В конфиг файле (custom.ini) в параметр all_modules добавляем имя нашего модуля на то место, где бы мы хотели его видеть, например, сразу после видеоклуба
all_modules[] = vclub all_modules[] = exampletv ;наш модуль all_modules[] = ex
После выполнение всех пунктов при следующей загрузке Ministra на приставке в главном меню должна появиться иконка добавленного сервиса.