Создание интерактивных объявлений
Интерактивное объявление — это HTML5-креатив (папка с index.html в корне), который плеер
отображает в web-view. Интерактив общается с плеером
через JavaScript-мост: получает метаданные экрана и кампании, управляет собственной
длительностью и возвращает платформе результаты показа.
Объект моста называется csBackend и предоставляет:
-
csBackend.playerData— JSON-объект с данными, которые сервер присылает объявлению (список полей — на странице объектаcsPlayerData); -
csBackend.completeData— объект, который заполняет объявление; отправляется платформе после показа (например, данные programmatic-бида); -
csBackend.setDuration(миллисекунды)— установка длительности текущего объявления; -
csBackend.sendResponse(data)— немедленная отправка данных плееру; -
события:
-
csBackend.afterPlayerInit— вызывается после подгрузки страницы в фоне; все запросы за данными делайте здесь; -
csBackend.beforePlayerShow— вызывается перед началом показа на экране; здесь запускайте видео и анимации; -
csBackend.afterPlayerShow— вызывается по окончании показа; здесь финализируйтеcompleteData.
-
Способ получения csBackend различается между платформами.
Windows / Linux (Qt-плеер)
На PC мост предоставляется через Qt WebChannel. Подключите qwebchannel.js и установите
соединение:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Интерактив</title>
<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>
</head>
<body>
<div style="position: absolute; top: 0px; left: 0px">
<video muted id="v2"></video>
</div>
<script>
var csBackend;
var video;
var metaData;
new QWebChannel(qt.webChannelTransport, function(channel) {
// объект с данными плеера
csBackend = channel.objects.csBackend;
// функция срабатывает, как только страница загрузилась в фоне;
// все запросы за данными — тут
csBackend.afterPlayerInit.connect(function() {
// подставляем контент
video = document.getElementById("v2");
video.setAttribute("src", "video.mp4");
metaData = JSON.parse(csBackend.playerData);
// GID экрана используется во всех системах — опирайтесь на него
console.log(metaData.gid);
// размеры фрейма — контент воспроизводится именно по ним
console.log("ширина " + metaData.frameResolution.width);
console.log("высота " + metaData.frameResolution.height);
// длительность слота в миллисекундах; ролики длиннее можно
// игнорировать или менять длительность объявления через setDuration
console.log(metaData.duration);
// когда объявление выйдет на экран
var now = Date.now();
console.log("выйдем на экране через мс: " +
(metaData.showingAdvertisementEndTime - now));
});
// функция вызывается непосредственно перед показом на экране
csBackend.beforePlayerShow.connect(function() {
video.play();
csBackend.completeData = {
htmlProgrammaticAd: "тут можно сохранять бид и прочие данные того, что показали"
};
});
// функция дёргается перед окончанием показа
csBackend.afterPlayerShow.connect(function() {
console.log("показ на экране закончился");
});
});
</script>
</body>
</html>
Чтобы протестировать креатив локально без аккаунта CS Play, запустите плеер в режиме отладки.
Android
На Android мост инициализируется через инжектируемый объект Android:
<script>
// инициализация CS-канала
var csBackend;
eval(Android.initCsBackend());
csBackend.afterPlayerInit.connect(function() {
var metaData = JSON.parse(csBackend.playerData);
csBackend.setDuration(10000);
csBackend.completeData = { "complete": "data" };
});
csBackend.beforePlayerShow.connect(function() {
// старт воспроизведения
});
csBackend.afterPlayerShow.connect(function() {
var completeData = JSON.stringify(csBackend.completeData);
Android.afterPlayerShow(completeData);
});
</script>
API csBackend (поля, методы и события) совпадает с PC. Обратите внимание на дополнительный
вызов Android.afterPlayerShow(completeData), который возвращает результаты плееру.
Smart TV (Tizen / webOS)
На Smart TV плеер является веб-приложением. Интерактивный контент получает события жизненного
цикла через postMessage — пример подписки на события и правила для HTML-контента на странице
CS Player на Smart TV.
Доставка файлов на плеер
Интерактивное объявление загружается в медиатеку архивом. Если креативу нужны обновляемые данные (цены, расписания, медиафайлы), настройте для него FTP-синхронизацию.