L'SDK IMA HTML5 supporta gli annunci audio con una configurazione simile a quella degli annunci video, ma con alcune importanti differenze. Per qualsiasi parte della configurazione di IMA non trattata in questa guida, consulta la guida introduttiva HTML5.
Utilizzo di un tag <audio> per la riproduzione dei contenuti
Il costruttore di
AdDisplayContainer
accetta un secondo argomento denominato videoElement
che IMA monitora come media player. Questo argomento accetta sia un tag <video>
sia un tag <audio>
. Per contenuti e annunci audio, questa guida consiglia di utilizzare un tag <audio>
per creare un
AdDisplayContainer
. Se hai contenuti video, puoi utilizzare un tag <video>
per mostrare un mix di annunci audio e video:
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);
Nascondere AdDisplayContainer
L'SDK IMA HTML5 richiede comunque un AdDisplayContainer
anche se non è presente alcuna parte di visualizzazione per gli annunci o i contenuti. Per questo motivo, ti consigliamo di nascondere il pulsanteAdDisplayContainer
. Ecco un esempio di come nascondere l'elemento:
style.css
.ad-container {
display: none;
}
Controlli personalizzati
Poiché AdDisplayContainer
è nascosto, sono necessari controlli personalizzati per gestire la riproduzione durante le interruzioni pubblicitarie. AdsManager
dispone di metodi che possono essere utilizzati per implementare questi controlli personalizzati:
Gestire gli annunci ignorabili
Poiché non è visibile AdDisplayContainer
, l'SDK IMA non può mostrare un pulsante Salta annuncio. Per gestire gli annunci ignorabili, implementa i seguenti metodi IMA:
Il seguente codice di esempio mostra come eseguire questa operazione.
ads.js
Puoi configurare una funzione updateSkippable
per determinare se e quando un annuncio può essere ignorato. Questa funzione deve essere chiamata per ogni evento AD_PROGRESS
IMA.
Consulta la guida introduttiva per istruzioni su come configurare i listener per gli eventi 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/interface/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);
}
A differenza degli annunci video, IMA non è in grado di fornire un pulsante per saltare gli annunci audio.
Gli sviluppatori devono aggiungere un'interfaccia utente personalizzata per gli annunci ignorabili, il che può essere fatto con un semplice tag <button>
. Questa funzione updateSkipUI
aggiorna il pulsante di avanzamento in base al fatto che l'annuncio sia ignorabile, se al momento è ignorabile e al tempo rimanente prima che l'annuncio diventi ignorabile. Utilizza la classe '.hidden'
, che non è fornita da IMA. La classe .hidden
aggiunge
display: none;
al <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');
}
}
Infine, imposta un ascoltatore per i clic degli utenti sul pulsante di avanzamento personalizzato. Per saltare gli annunci, chiama la funzione adsManager.skip()
.
skipButton.addEventListener('click', () => {
adsManager.skip();
});
Queste sono le modifiche principali necessarie per configurare l'SDK IMA con gli annunci audio. Per trovare risposte ai problemi di implementazione, visita il forum tecnico dell'SDK IMA.