IMA HTML5 SDK, birkaç temel fark dışında, video reklamlara benzer kuruluma sahip işitsel reklamları destekler. IMA kurulumunun bu kılavuzda ele alınmayan herhangi bir bölümü için HTML5 Başlangıç kılavuzuna bakın.
İçerik oynatma için <audio> etiketi kullanma
AdDisplayContainer
oluşturucusu, IMA'nın içerik oynatıcı olarak izlediği videoElement
adlı ikinci bir bağımsız değişken alır. Bu bağımsız değişken hem <video>
hem de <audio>
etiketini kabul eder. Bu kılavuzda, işitsel içerik ve reklamlarda AdDisplayContainer
oluşturmak için <audio>
etiketi kullanılması önerilir. Video içeriğiniz varsa işitsel ve video reklamların bir karışımını göstermek için <video>
etiketi kullanabilirsiniz:
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);
ReklamGörüntülü ReklamKapsayıcısını gizleme
IMA HTML5 SDK, reklamların veya içeriğin görüntülü kısmı olmasa bile bir AdDisplayContainer
gerektirir. Bu nedenle, AdDisplayContainer
öğesini gizlemenizi öneririz. Aşağıda, öğeyi nasıl gizleyebileceğinize ilişkin bir örnek verilmiştir:
style.css
.ad-container {
display: none;
}
Özel denetimler
AdDisplayContainer
gizli olduğundan, reklam araları sırasında oynatmayı yönetmek için özel kontroller gerekir. AdsManager
, aşağıdaki özel kontrolleri uygulamak için kullanılabilecek yöntemlere sahiptir:
Atlanabilir reklamları işleme
Görünür bir AdDisplayContainer
olmadığından IMA SDK Reklamı atla düğmesi gösteremez. Atlanabilir reklamları yönetmek için aşağıdaki IMA yöntemlerini uygulayın:
Aşağıdaki örnek kod, bunu nasıl yapacağınızı gösterir.
ads.js
Bir reklamın atlanıp atılamayacağını ve ne zaman atlanabileceğini belirlemek için updateSkippable
işlevi ayarlayabilirsiniz. Bu işlev, her AD_PROGRESS
IMA etkinliğinde çağrılmalıdır.
IMA etkinlikleri için işleyicilerin nasıl ayarlanacağıyla ilgili talimatlar için Başlangıç kılavuzunu inceleyin.
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);
}
Video reklamlardan farklı olarak IMA, işitsel reklamlar için bir atlama düğmesi sağlayamaz.
Geliştiriciler, atlanabilir reklamlar için özel bir kullanıcı arayüzü eklemelidir. Bu işlemi basit bir <button>
etiketiyle yapabilirsiniz. Bu updateSkipUI
işlevi, reklamın atlanabilir olup olmadığına, reklamın şu anda atlanabilir olup olmadığına ve reklamın atlanabilir hale gelmesi için ne kadar süre kaldığına bağlı olarak atla düğmesini günceller. IMA tarafından sağlanmayan '.hidden'
sınıfını kullanır. .hidden
sınıfı, display: none;
öğesini <button>
öğesine ekler.
/**
* 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');
}
}
Son olarak, özel atla düğmenize kullanıcı tıklamaları için bir işleyici ayarlayın. Reklamları atlamak için adsManager.skip()
işlevini çağırın.
skipButton.addEventListener('click', () => {
adsManager.skip();
});
Bunlar, IMA SDK'yı işitsel reklamlarla ayarlamak için gereken ana değişikliklerdir. Uygulama sorunlarının yanıtları için IMA SDK Teknik Forumu'nu ziyaret edin.