IMA SDK для HTML5 поддерживает не только линейные видеообъявления, но и линейные медийные объявления. Подробную информацию о линейных видеообъявлениях можно найти в статье Общие сведения о Решениях для видеорекламы.
Включив линейные медийные объявления, вы можете повысить спрос на рекламные места, поскольку такие объявления будут конкурировать за них с линейными видеообъявлениями. IMA SDK обрабатывает отрисовку линейных медийных объявлений, но вам нужно настроить обнаружение видеоконтента. Реализация обнаружения контента IMA зависит от того, создаете ли вы проигрыватель контента в том же фрейме источника, что и проигрыватель объявлений, или же проигрыватель объявлений создается в перекрестном фрейме.
В этом руководстве рассказывается, как настроить обнаружение контента, чтобы включить линейные медийные объявления, изменить видеопроигрыватель контента и прекратить сбор сигналов контента.
Как настроить обнаружение контента
Чтобы включить линейные медийные объявления для запросов объявлений, выполните следующие действия:
Тот же источник
Если IMA SDK и проигрыватель контента имеют один и тот же источник, выполните одно из следующих действий:
Рекомендуемый вариант. Передайте видеопроигрыватель в вызов
AdsManagerLoadedEvent.getAdsManager(). ХотяgetAdsManager()позволяет передавать объект, содержащий свойствоcurrentTime, для поддержки обнаружения контента необходимо передать экземплярHTMLVideoElementвgetAdsManager().function onAdsManagerLoaded(adsManagerLoadedEvent) { // Set any AdsRenderingSettings here. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); // Get the ads manager. adsManager = adsManagerLoadedEvent.getAdsManager(videoElement, adsRenderingSettings); }Если вы не можете предоставить проигрыватель контента во время вызова
AdsManagerLoadedEvent.getAdsManager(), вызовите методAdsManager.configureAdsManager()с видеопроигрывателем. Чтобы обнаружение контента работало, это должен бытьHTMLVideoElement.
function onAdsManagerLoaded(adsManagerLoadedEvent) {
adsManager =
adsManagerLoadedEvent.getAdsManager(null);
adsManager.configureAdsManager(videoElement);
}
Если вы не настроите обнаружение контента, серверы объявлений Google могут прекратить показ линейных медийных объявлений.
Если проигрыватель контента находится в том же источнике, из которого вы загружаете IMA SDK, то вам не нужно вносить изменения в реализацию IMA, чтобы изменить проигрыватель контента или прекратить сбор сигналов контента.
Из разных источников
Если IMA SDK и проигрыватель контента находятся в разных источниках, IMA может собирать сигналы обнаружения контента с помощью класса CrossOriginProxy. Этот класс позволяет IMA SDK проверять правильность размещения линейных медийных объявлений и собирать сигналы, связанные с тематикой видеоконтента. Если вы размещаете IMA SDK в междоменном фрейме iframe, то необходимо реализовать класс CrossOriginProxy.
Если вы продолжите размещать проигрыватель контента в источнике, отличном от IMA SDK, и не реализуете класс CrossOriginProxy, серверы объявлений Google могут прекратить показ линейных медийных объявлений.
Чтобы загрузить класс CrossOriginProxy в приложение, выполните следующие действия:
Импортируйте файл
ima_proxy.jsв HTML-файл:<html> <head> <title>IMA HTML5 cross-origin iframe sample</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id="mainContainer"> <div id="content"> <video id="contentElement"> <source src="https://storage.googleapis.com/gvabox/media/samples/stock.mp4"></source> </video> </div> <!-- The cross-origin iframe where you load IMA SDK and play ads. --> <iframe id="adContainerIframe" src="https://cross-origin-domain.com/ads-sandbox.html" > </iframe> </div> <button id="playButton">Play</button> <script src="//imasdk.googleapis.com/js/sdkloader/ima_proxy.js"></script> <script src="main.js"></script> </body> </html>В файле main.js получите экземпляр
CrossOriginProxy.Вызовите метод
setVideoElements()с массивом всех видеопроигрывателей, которые показывают рекламу на вашей странице или в приложении.
Прежде чем отправлять запрос объявления, необходимо передать элементы видео в экземпляр CrossOriginProxy с помощью вызова setVideoElements(). В примере ниже передается массив, содержащий один видеопроигрыватель:
// On window load attach an event to the play button click
// that triggers playback of the content video element.
window.addEventListener('load', function(event) {
videoContent = document.getElementById('contentElement');
ima.crossOriginProxy.getInstance().setVideoElements([videoContent]);
playButton = document.getElementById('playButton');
playButton.addEventListener('click', playAds);
});
Как изменить видеопроигрыватель для контента
Если вы перейдете на другой видеопроигрыватель или добавите ещё один, вам нужно будет передать новый массив в метод setVideoElements(). Когда вы вызываете метод setVideoElements(), IMA начинает собирать сигналы для нового проигрывателя контента и прекращает сбор сигналов для проигрывателей, переданных в предыдущих вызовах.
В примере ниже новый элемент video передается в класс CrossOriginProxy.
function createNewContentPlayer(newPlayerId) {
newVideoContent = document.getElementById(newPlayerId);
ima.crossOriginProxy.getInstance().setVideoElements([newVideoContent]);
// Continue with any other steps needed to initiate the content player
}
Прекращать сбор сигналов после завершения показа объявлений
Когда показ объявлений завершится и вы вызовете метод AdsLoader.destroy(), вам также нужно будет вызвать метод setVideoElements() с пустым массивом. Вызов setVideoElements() с пустым массивом удаляет ссылку на проигрыватели контента, которые хранит IMA, и предотвращает утечку памяти.