Anúncios de áudio

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.