O SDK HTML5 do IMA é compatível com anúncios em áudio com uma configuração semelhante à dos anúncios em vídeo, mas com algumas diferenças importantes. Para qualquer parte da configuração do IMA não abordada neste guia, veja a página de Primeiros passos de HTML5 guia.
Uso de um <audio> tag para reprodução de conteúdo
O construtor de
AdDisplayContainer
usa um segundo argumento chamado videoElement
, que o IMA rastreia como o conteúdo
de futebol. Esse argumento aceita tags <video>
ou <audio>
. Para áudio
conteúdo e anúncios, este guia recomenda usar uma tag <audio>
para criar uma
AdDisplayContainer
. Se você tiver conteúdo de vídeo, use uma tag <video>
para
mostrando uma combinação de anúncios em áudio e em vídeo:
index.html
<audio id="audio-player"></audio>
<div class="ad-container"></div>
ads.js
audioPlayer = document.getElementById('audio-player');
adContainer = document.getElementById('ad-container');
adDisplayContainer = new google.ima.AdDisplayContainer(adContainer,
audioPlayer);
Ocultar o AdDisplayContainer
O SDK HTML5 do IMA ainda exige um AdDisplayContainer
, mesmo que não haja
parte exibida aos anúncios ou ao conteúdo. Por isso, recomendamos ocultar
AdDisplayContainer
: Veja abaixo um exemplo de como ocultar o elemento:
style.css
.ad-container {
display: none;
}
Controles personalizados
Como o AdDisplayContainer
está oculto, controles personalizados são necessários para processar
a reprodução durante os intervalos de anúncio. O AdsManager
tem métodos que podem ser usados para
implementar esses controles personalizados:
Processar anúncios puláveis
Como não há AdDisplayContainer
visível, o SDK do IMA não pode mostrar um
Botão Pular anúncio. Para processar anúncios puláveis, implemente o seguinte:
métodos:
O exemplo de código abaixo demonstra como fazer isso.
ads.js
É possível configurar uma função updateSkippable
para determinar se e quando um anúncio
podem ser ignoradas. Essa função precisa ser chamada em cada evento AD_PROGRESS
do IMA.
Consulte a
Guia explicativo
para instruções sobre como configurar listeners para eventos do IMA.
function onAdsManagerLoaded(adsManagerLoadedEvent) {
adsManager = adsManagerLoadedEvent.getAdsManager(
audioPlayer);
...
adsManager.addEventListener(
google.ima.AdEvent.Type.AD_PROGRESS,
onAdEvent);
...
}
function onAdEvent(adEvent) {
const ad = adEvent.getAd();
if (ad) {
currentAd = ad; // currentAd is defined outside of this functions scope.
}
switch (adEvent.type) {
...
case google.ima.AdEvent.Type.AD_PROGRESS:
// See https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdProgressData
const adProgressData = adEvent.getAdData();
updateSkippable(
adProgressData.currentTime,
currentAd.getSkipTimeOffset()
);
break;
...
}
}
/**
* Called when there may be a change in the skippable state.
* @param {number} currentTime The current time of the
* currently playing ad.
* @param {number} skipTimeOffset The number of seconds of playback
* before the ad becomes skippable. -1 is returned for non skippable
* ads or if this is unavailable.
*/
updateSkippable(currentTime, skipTimeOffset) {
const isAdSkippable = skipTimeOffset !== -1;
const isSkipCurrentlyAllowed = adsManager.getAdSkippableState();
const timeTillSkipInSeconds = Math.ceil(skipTimeOffset - currentTime);
updateSkipUI(
isAdSkippable, isSkipCurrentlyAllowed, timeTillSkipInSeconds);
}
Ao contrário dos anúncios em vídeo, o IMA não fornece um botão "Pular" para anúncios em áudio.
Os desenvolvedores precisam adicionar uma interface personalizada para anúncios puláveis, o que pode ser feito com um
tag <button>
simples. A função updateSkipUI
atualiza o botão "Pular"
com base na possibilidade de pular o anúncio ou se ele é atualmente pulável.
quanto tempo resta até que o anúncio se torne pulável. Ele usa
'.hidden'
, que não é fornecida pelo IMA. A classe .hidden
adiciona
display: none;
para <button>
.
/**
* Updates the skip button UI.
* @param {boolean} isAdSkippable if the current ad is a skippable ad.
* @param {boolean} isSkipCurrentlyAllowed if the ad can be skipped now.
* @param {number} timeTillSkipInSeconds time until the ad can be skipped in
* seconds.
*/
updateSkipUI(isAdSkippable, isSkipCurrentlyAllowed, timeTillSkipInSeconds) {
if (isAdSkippable) {
skipButton.classList.remove('hidden');
if (isSkipCurrentlyAllowed) {
skipButton.textContent = 'Skip ad';
skipButton.disabled = false;
} else {
skipButton.textContent = `Skip in ${timeTillSkipInSeconds} seconds`;
skipButton.disabled = true;
}
} else {
skipButton.classList.add('hidden');
}
}
Por fim, defina um listener para os cliques do usuário no seu botão "Pular" personalizado. Para pular anúncios,
chame o método
adsManager.skip()
função.
skipButton.addEventListener('click', () => {
adsManager.skip();
});
Estas são as principais mudanças necessárias para configurar o SDK do IMA com anúncios em áudio. Para respostas a problemas de implementação, acesse a Fórum técnico do SDK do IMA.