Z tego przewodnika dowiesz się, jak wdrożyć własny niestandardowy interfejs, korzystając z pakietu IMA SDK dla HTML5. Aby to zrobić, musisz wyłączyć domyślny interfejs, skonfigurować nowy niestandardowy interfejs, a następnie uzupełnić nowy interfejs informacjami o reklamie uzyskanymi z pakietu SDK. Ten przewodnik bazuje na próbka prosta dla HTML5.
Dodawanie elementów interfejsu do modelu DOM
Zanim napiszesz kod JavaScript, zmodyfikuj kod HTML i arkusz stylów, dodając nowych elementów interfejsu dla przycisków Więcej informacji, Pomiń reklamę i samowyzwalacz:
index.html
<div id="mainContainer">
<div id="content">
<video id="contentElement">
<source src="https://storage.googleapis.com/gvabox/media/samples/stock.mp4"></source>
</video>
</div>
<div id="adContainer"></div>
<div id="customUi">
<div id="adClick" class="customUIButton">Click me!</div>
<div id="skipButton" class="customUIButton"></div>
<div id="adCountdown"></div>
</div>
</div>Style.css
...
#customUI {
display: none;
text-align: center;
width: 100%;
height: 100%;
}
.customUIButton {
position: absolute;
right: 0px;
background-color: red;
}
#adClick {
top: 0px;
width: 100px;
height: 50px;
line-height: 3em;
cursor: pointer;
}
#skipButton {
top: 213px;
width: 150px;
height: 35px;
line-height: 2em;
display: none;
}
#adCountdown {
position: absolute;
left: 0px;
bottom: 10px;
width: 120px;
height: 20px;
background-color: red;
}
...
Jeśli chcesz, możesz zmienić styl interfejsu. ten interfejs to tylko przykład.
Wyłącz wbudowany interfejs
Zacznij od poinformowania pakietu SDK, że chcesz wyłączyć jego wbudowany interfejs.
ads.js
function onAdsManagerLoaded(adsManagerLoadedEvent) { const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.disableUi = true; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager( videoContent, adsRenderingSettings); ... }
Pokazuj i ukrywaj niestandardowy interfejs, gdy jest to dozwolone
Niektóre reklamy Google, np. reklamy AdSense, nie pozwalają na stosowanie niestandardowego interfejsu użytkownika i zawsze
nie będą renderować
własnego interfejsu użytkownika. W arkuszu stylów nad niestandardowym interfejsem użytkownika div ma wartość
są domyślnie ukryte. Wyświetlaj go tylko wtedy, gdy aktualnie odtwarzana reklama ukrywa swoje
UI i ukryj niestandardowy interfejs po każdej reklamie, na wypadek gdyby kolejna reklama nie
zezwalaj na niestandardowy interfejs użytkownika:
ads.js
let mainContainerDiv, currentAd, customUiDiv; ... function setUpIMA() { customUiDiv = document.getElementById('customUi'); mainContainerDiv = document.getElementById('mainContainer'); mainContainerDiv.addEventListener('click', () => { // Need this to resume ads after clickthrough. adsManager.resume(); }); ... } function onAdsManagerLoaded(adsManagerLoadedEvent) { ... adsManager.addEventListener( google.ima.AdEvent.Type.SKIPPED, onAdEvent); } function onAdEvent(adEvent) { switch(adEvent.type) { ... case google.ima.AdEvent.Type.STARTED: currentAd = adEvent.getAd(); if (currentAd.isUiDisabled()) { showCustomUi(); } break; case google.ima.AdEvent.Type.COMPLETE: case google.ima.AdEvent.Type.SKIPPED: hideCustomUi(); break; } } function showCustomUi() { customUiDiv.style.display = 'block'; } function hideCustomUi() { customUiDiv.style.display = 'none'; }
Dodawanie reguł do przycisku Więcej informacji
Pierwszym elementem interfejsu, który musisz utworzyć, jest przycisk Więcej informacji. Ten element powiadamia pakiet SDK, gdy został kliknięty:
ads.js
let clickDiv;
...
function setUpIma() {
...
clickDiv = document.getElementById('adClick');
clickDiv.addEventListener('click', (e) => {
// Prevent this from propagating to the customUi div. That would cause the ad to
// resume immediately after the user clicks it, and we want it to pause.
e.stopPropagation();
adsManager.clicked();
});
...
}Dodaj funkcje logiczne do licznika czasu
Następnie połącz licznik czasu, który będzie używany do odpytywania pozostałego czasu w reklamach.
ads.js
let countdownDiv, uiUpdateInterval; ... function setUpIma() { ... countdownDiv = document.getElementById('adCountdown'); ... } function showCustomUi() { uiUpdateInterval = setInterval(updateUi, 100); customUiDiv.style.display = 'block'; } function hideCustomUi() { if (uiUpdateInterval) { clearInterval(uiUpdateInterval); } customUiDiv.style.display = 'none'; } function updateUi() { updateCountdown(); } function updateCountdown() { let countdownText = 'Ad '; const adPodInfo = currentAd.getAdPodInfo(); const totalAds = adPodInfo.getTotalAds(); if (totalAds > 1) { const position = adPodInfo.getAdPosition(); countdownText += position + ' of ' + totalAds; } const remainingTime = Math.ceil(adsManager.getRemainingTime()); countdownText += ' (' + remainingTime + 's)'; countdownDiv.innerText = countdownText; }
Dodaj reguły do przycisku Pomiń reklamę
Na koniec dodaj przycisk Pomiń reklamę. Ten przycisk jest wyświetlany tylko w przypadku reklamy możliwe do pominięcia i ich licznik czasu muszą osiągnąć wartość 0, zanim zostaną aktywowane. umożliwiają użytkownikowi pominięcie reklamy.
ads.js
let skipDiv; // Set this infinitely high to fail early <=0 checks. let timeTillSkip = Number.POSITIVE_INFINITY; ... function setUpIma() { ... skipButton = document.getElementById('skipButton'); skipButton.addEventListener('click', (e) => { // Prevent this from propagating to the customUi div. That would cause the ad to // resume immediately after the user clicks it, and we want it to pause. e.stopPropagation(); if (timeTillSkip <= 0) { adsManager.skip(); } }); ... } function showCustomUi() { if (currentAd.isSkippable()) { skipButton.innerText = ''; skipButton.style.display = 'block'; } else { skipButton.style.display = 'none'; } ... } function updateUi() { updateCountdown(); if (currentAd.isSkippable()) { updateSkip(); } } function updateSkip() { const currentTime = currentAd.getDuration() - adsManager.getRemainingTime(); timeTillSkip = Math.ceil(currentAd.getSkipTimeOffset() - currentTime); if (timeTillSkip > 0) { skipButton.innerText = "Skip this ad in " + timeTillSkip + '...'; skipButton.style.cursor = 'default'; } else { skipButton.innerText = "Skip ad"; skipButton.style.cursor = 'pointer'; } }
Rozwiązywanie problemów
- Czy masz przykładowy tag, w którym możesz wyłączyć interfejs użytkownika reklamy?
- Możesz skopiować URL tego przykładowy tag i wklej go w implementacji IMA.
- Nie mogę wyłączyć domyślnego interfejsu użytkownika.
- Sprawdź, czy ustawienie
adsRenderingSettings.disableUima wartośćtruei przekaże jągetAdsManager. Sprawdź, czyad.isUiDisabled()zwracatrue. Poza tym, aby można było wyłączyć reklamy, sieć musi być włączona w usłudze Ad Manager. UI reklam. Jeśli tak jest, VAST zawiera elementExtension, który wygląda lubię: Jeśli nadal masz problemy, skontaktuj się z menedżerem konta, aby upewnić się, że nie działa. Niektóre typy reklam wymagają określonego interfejsu użytkownika. te reklamy zwracają wartość<Extension type="uiSettings"> <UiHideable>1</UiHideable> </Extension>
<UiHideable>równą 0. W takim przypadku Twój zespół trafiker musi wprowadź zmiany, by mieć pewność, że te typy reklam nie będą się wyświetlać.