Adsense для игр IMA SDK HTML5 Ошибка воспроизведения

Ошибка: не удалось инициализировать элемент воспроизведения рекламы перед началом воспроизведения рекламы.

Мы не можем получить объявление, чтобы показать для нас. Раньше он работал просто отлично, а потом вдруг эта ошибка выдается. Мы не меняли код, так как он работал годами.

Мы используем это на игровых сайтах, показываем видеообъявление, а затем используем onMediaEnd() показать игру после того, как видео завершено или обнаружена ошибка.

<script>

var adVideoContainer   = document.getElementById('ad-video');
var adDisplayContainer = new google.ima.AdDisplayContainer(adVideoContainer);
var adsLoader          = new google.ima.AdsLoader(adDisplayContainer);

adsLoader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function(adEvent){
    console.log('ADS_MANAGER_LOADED');
    onAdsManagerLoaded(adEvent);
}, true);

adsLoader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function(adEvent) {
    console.log('AD_ERROR');
    onMediaEnd();
},false);

function onAdsManagerLoaded(adEvent)
{
    var adsRenderingSettings = new google.ima.AdsRenderingSettings();

    var adsManager = adEvent.getAdsManager({
        currentTime: 0
    });

    window.adsManager = adsManager;

    adsManager.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, function(adEvent) {
        console.log('AD_ERROR');
        onMediaEnd();
    });

    adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, function(adEvent) {
        console.log('ALL_ADS_COMPLETED');
        onMediaEnd();
    });

    adsManager.addEventListener( google.ima.AdEvent.Type.COMPLETE, function(adEvent) {
        console.log('COMPLETE');
        onMediaEnd();
    });

    adsManager.addEventListener(google.ima.AdEvent.Type.LOADED,function(adEvent){
        console.log('LOADED');

        var ad = adEvent.getAd();
        var adData = adEvent.getAdData();

        console.log(adData);

        if (!ad.isLinear())
        {
            // show game content
            onMediaEnd();
        }
        else
        {
            // Ad is being shown, lets do nothing for now...
        }
    });


    try
    {
        adsManager.init(640, 480, google.ima.ViewMode.NORMAL);
        adsManager.start();
    }
    catch (adError)
    {
        // this is currently where the ad keeps failing! 

        console.log(adError);
        onMediaEnd();
    }
}


    var adsRequest = new google.ima.AdsRequest();
    adsRequest.adTagUrl               = '<?=$adsenseVASTURL?>';
    adsRequest.linearAdSlotWidth      = 640;
    adsRequest.linearAdSlotHeight     = 480;
    adsRequest.nonLinearAdSlotHeight  = 480;
    adsRequest.nonLinearAdSlotWidth   = 640;
    adsRequest.forceNonLinearFullSlot = true;

    /*adsRequest.setAdWillAutoPlay(false);
    adsRequest.setAdWillPlayMuted(true);*/

    adsLoader.requestAds(adsRequest);

</script>

Используя это:

https://github.com/googleads/googleads-ima-html5

https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis

1 ответ

Я точно так же столкнулся с моими онлайн-играми (десктоп). Удивительно, но я смог снова запустить видеообъявления после добавления

adDisplayContainer.initialize();

хотя в документах говорится, что этот метод не влияет на настольные платформы...

var adVideoContainer   = document.getElementById('ad-video');
var adDisplayContainer = new google.ima.AdDisplayContainer(adVideoContainer);
var adsLoader          = new google.ima.AdsLoader(adDisplayContainer);
adDisplayContainer.initialize();
Другие вопросы по тегам