Кроссплатформенное Smart TV приложение в одном экземпляре. Библиотека SmartBox для Samsung, LG, Philips и других

в 11:03, , рубрики: html, javascript, lg smart tv, philips, philips smart tv, Samsung, samsung smart tv, smart tv alliance, smart tv framework, SmartTV, разработка, метки: , , , , , , , , , ,

Копаясь в памяти своего неискушённого идеальным миром мозга, я, припоминаю, как два года назад начиналась наша история по разработке приложений для SmartTv. Если коротко, то это был АД!!! богатейший опыт.

image

Однако, хотелось бы получить этот опыт сразу, не наступая на недокументированные грабли, разложенные по всей технологии, и специальные детские грабли разложенные каждым вендором отдельно. Но как говорится «c'est la vie» и нам пришлось пробиваться сквозь тернии к звёздам!

В итоге мы получили кроссплатформенную расширяемую библиотеку для всех SmartTv.
И имя этой библиотеке — SmartBox. Opensource, а потому постоянно в процессе разработки и документирования.

Координаты и демки Smartbox

Предпосылки к созданию библиотеки

Несмотря на то, что почти всё SmartTv стоит на браузерных движках (Gecko, Webkit), есть у каждого отдельного вендора свои баги нюансы и баги недокументированные возможности. Собственно отсюда всё зло:

  • Невозможность писать один раз. Несмотря на созданные вендорами телевизоров альянсы и даже SDK, как ни старайся, а несколько приложений делать. Да и плюс к этому, есть вендоры, которым этот альянс за глаза не нужен, например, Samsung. Итого: если появится еще одна платформа или вы захотите расширить приложение на существующую, вам придётся не сладко.
  • Невозможность писать один раз для одного вендора. Да, как ни удивительно, но есть и такое. Различие вёрстки, различные движки браузеров, различие API объектов. Голова кругом! (например 2011 и 2012 и 2013 TV Samsung)
  • Нежелание использовать чужое. Здесь это как раз оправданный баг сознания. Под чужим я понимаю специализированные разные элементы управления интерфейсом: клавиатуры, селекты, инпуты, формы и т.д. У каждого вендора они, к сожалению, разные. Попробовав однажды — откажешься навсегда! А откажешься из-за банальной непереносимости на другие платформы.
  • Необходимость использовать чужое. Есть целый комплекс низкоуровневых для TV API, который нет возможности, а порой и желания переносить на TV-братьев по разуму. К таким мы относим: видеоплееры, системы защиты контента, DRM и т.д.
  • Сырость технологии в целом. Действительно, редкий фронтэнд программист сядет и с лёту сделает приложение для SmartTV, а тем более для нескольких разом. К тому же, как я уже говорил, детские грабли, разложенные каждым вендором отдельно, создают некоторые болевые ощущения в области их удара после обнаружения. Более глубокое осознание проблемы заключается в диком желании писать код абстрагируясь от конечного устройства. Это полезно как на первом этапе знакомства с технологией, так и после досконального изучения всего сущего в Smart Tv.
  • Альтруизм. Избавляем мир от граблей! Особенно детских.

image

Возможности библиотеки SmartBox

Нудно и упорно разрабатывая свои приложения для Смартов, мы вынуждены были изучать всю документацию вплоть до обращения в саппорт за пояснениями. Всё это систематизировалось и накапливалось в нашем таск трекере и wiki.

Также мы изучили исходники наших конкурентов братьев по оружию — i*i, yo*a, TV*avr, Z**mbyBox и иных видео сервисов. (Откуда и каким способом они были получены я не знаю, даже не спрашивайте). Из этих исходников мы просто выяснили, что все мы идём одной дорогой к счастливому будущему SmartTv.

В итоге сели и всё переделали написав библиотеку, которая упростила нам жизнь в разы. И, надеемся, что упростит и начинающим «смартистам».

Из возможностей:

  • Писать абстрактный код основываясь на API библиотеки, а не каждого TV или приставки (и это реально работает).
  • Расширять приложения на различные платформы без перепиливания самого приложения.

Поддерживаемые платформы:

Пока мы используем термин triple penetration, т.е. имеем проникновение в 3 платформы:

  • Samsung,
  • Lg,
  • Philips.

Для внедрения своей платформы, можно воспользоваться документацией о том, как это сделать. Для этого, как вы поняли, придётся расширить библиотеку файлом платформы с реализацией общих методов.

Из плагинов на сегодняшний день:

  • Методы отдельных платформ,
  • Консоль Лог,
  • Навигация (Логика и возможности описаны очень подробно в документации),
  • Поля ввода,
  • Виртуальная расширяемая на любой язык или набор символов клавиатура,
  • Голосовое управление (актуально для Samsung),
  • Управление жестами,
  • Легенда,
  • Плеер,
  • Абстракция LocalStorage — хранение данных на конечных устройствах.

image

TODO на ближайшее будущее

  • Написать более высокоуровневый framework.
  • Внедрять поддержку других Вендеров помимо лидеров (Sony, Panasonic, DuneHD, др).
  • Фичи и баги.

Всем спасибо и хорошего окончания недели!

PS:
  • Возможные баги в браузере не являются аномалией. Песня о другом.
  • Надеюсь Сашка не засудит меня как мистера Дурова.
  • Вероятно не на все тонкости смогу ответить. Потому инвайты можно слать заслуженным разработчикам:
    • Чинин Денис (chininden[at]gmail.com) — девелопер,
    • Полецкий Артём (artempoletsky[at]gmail.com) — девелопер,
    • Попович Илья (Loshadushka[at]gmail.com) — тестер-языковед-переводчик,
    • Шамгунов Ильдар (il.shamgunov[at]gmail.com) — режиссёр и оператор,
    • Логинов Павел (PLoginoff) — критик и главный редактор.

Автор: ZmeeeD

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js