Pakiet IMA HTML5 SDK obsługuje reklamy audio o podobnej konfiguracji jak reklamy wideo, ale z kilkoma kluczowymi różnicami. Więcej informacji o każdym aspekcie konfiguracji IMA, który nie został omówiony w tym przewodniku, znajdziesz w przewodniku HTML5 dla początkujących.
Używanie tagu <audio> do odtwarzania treści
Konstruktor AdDisplayContainer
przyjmuje drugi argument o nazwie videoElement
, który IMA śledzi jako odtwarzacz treści. Ten argument może przyjmować tag <video>
lub <audio>
. W przypadku treści i reklam audio zalecamy użycie tagu <audio>
do tworzenia tagu AdDisplayContainer
. Jeśli masz treści wideo, możesz użyć tagu <video>
do wyświetlania reklam audio i wideo:
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);
Ukrywanie elementu AdDisplayContainer
Pakiet IMA HTML5 SDK nadal wymaga AdDisplayContainer
, nawet jeśli reklamy lub treści nie zawierają części wyświetlania. Dlatego zalecamy ukrycie AdDisplayContainer
. Przykład sposobu ukrywania elementu:
style.css
.ad-container {
display: none;
}
Elementy sterujące niestandardowe
Ponieważ AdDisplayContainer
jest ukryty, do obsługi odtwarzania podczas przerw na reklamy potrzebne są elementy sterujące niestandardowe. AdsManager
zawiera metody, które można wykorzystać do implementacji tych niestandardowych ustawień:
Obsługa reklam możliwych do pominięcia
Ponieważ nie ma widocznego elementu AdDisplayContainer
, pakiet IMA SDK nie może wyświetlić przycisku Pomiń reklamę. Aby obsługiwać reklamy możliwe do pominięcia, zastosuj te metody IMA:
Poniżej znajdziesz przykładowy kod, który pokazuje, jak to zrobić.
ads.js
Możesz skonfigurować funkcję updateSkippable
, aby określić, czy i kiedy można pominąć reklamę. Ta funkcja powinna być wywoływana w przypadku każdego zdarzenia IMA.AD_PROGRESS
Więcej informacji o konfigurowaniu detektorów zdarzeń IMA znajdziesz w przewodniku Wprowadzenie.
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);
}
W odróżnieniu od reklam wideo IMA nie może udostępniać przycisku pomijania reklam audio.
Deweloperzy muszą dodać niestandardowe UI dla reklam możliwych do pominięcia. Można to zrobić za pomocą prostego tagu <button>
. Funkcja updateSkipUI
aktualizuje przycisk pomijania w zależności od tego, czy reklama jest możliwa do pominięcia, czy jest obecnie możliwa do pominięcia i ile czasu zostało do momentu, gdy stanie się możliwa do pominięcia. Korzysta ona z klasy '.hidden'
, która nie jest udostępniana przez IMA. Klasa .hidden
dodaje display: none;
do <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');
}
}
Na koniec ustaw listenera na kliknięcia przez użytkownika niestandardowego przycisku pomijania. Aby pominąć reklamy, wywołaj funkcję adsManager.skip()
.
skipButton.addEventListener('click', () => {
adsManager.skip();
});
Oto główne zmiany, które należy wprowadzić, aby skonfigurować pakiet IMA SDK pod kątem reklam audio. Odpowiedzi na pytania dotyczące problemów z implementacją znajdziesz na forum technicznym IMA SDK.