Я тоже собираюсь сделать это, но использую GPT APi (я довольно новичок в этом коде, так что не знаю, что делать, поэтому ищу помощь в действии)
Я нашел этов документации GPT ApI:
Прослушиваемый слушатель впечатлений, специфическая для слота логика.Слушатель будет вызван, когда показ будет считаться видимым.Это событие также работает на уровне обслуживания, но, как и выше, вы можете фильтровать ответы только на определенное рекламное место, используя этот шаблон
googletag.pubads (). AddEventListener ('impressionViewable', функция (событие){if (event.slot == targetSlot) {// логика, специфичная для слотов.}});
и уже есть это, что обновляет рекламу через X секунд
googletag.cmd.push(function() {
var mappingleaderslot = googletag.sizeMapping().
addSize([1024, 769], [[970,250],[970,90],[728,90],[468,60],[320,50],[234,60]]).
addSize([768, 500], [[728,90],[468,60],[320,50],[234,60]]).
addSize([1, 1], [[320,50],[234,60]]).
build();
var mappingbigboxslot = googletag.sizeMapping().
addSize([1024, 769], [[300,600],[300,250],[160,600],[120,600],[250,250]]).
addSize([768, 500], [[300,250],[250,250]]).
addSize([1, 1], [[300,250],[250,250]]).
build();
topSlot = googletag.defineSlot('/1001824/prebid_test2', [[970, 250],[970, 90],[728, 90],[468, 60],[320, 50],[234, 60]], 'topSlot').defineSizeMapping(mappingleaderslot).setTargeting("test", "refresh").addService(googletag.pubads());
middlerightSlot = googletag.defineSlot('/1001824/prebid_test3', [[300, 600],[300, 250],[160, 600],[120, 600],[250, 250]], 'middlerightSlot').defineSizeMapping(mappingbigboxslot).setTargeting("test", "refresh").addService(googletag.pubads());
bottomrightSlot = googletag.defineSlot('/1001824/prebid_test1', [[300, 600],[300, 250],[160, 600],[120, 600],[250, 250]], 'bottomrightSlot').defineSizeMapping(mappingbigboxslot).setTargeting("test", "refresh").addService(googletag.pubads());
bottomleftSlot = googletag.defineSlot('/1001824/prebid_test4', [[300, 600],[300, 250],[160, 600],[120, 600],[250,250]], 'bottomleftSlot').defineSizeMapping(mappingbigboxslot).setTargeting("test", "refresh").addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs(true, true);
googletag.pubads().setCentering(true);
googletag.enableServices();
googletag.display("topSlot");
googletag.display("middlerightSlot");
googletag.display("bottomrightSlot");
googletag.display("bottomleftSlot");
setInterval(function(){googletag.pubads().refresh([topSlot]);}, 120000);
setInterval(function(){googletag.pubads().refresh([middlerightSlot]);}, 120000);
setInterval(function(){googletag.pubads().refresh([bottomrightSlot]);}, 120000);
setInterval(function(){googletag.pubads().refresh([bottomleftSlot]);}, 120000);
});
function refreshSlot(slot) {
pbjs.que.push(function() {
pbjs.requestBids({
timeout: PREBID_TIMEOUT,
adUnitCodes: [slot.getSlotElementId()],
bidsBackHandler: function() {
pbjs.setTargetingForGPTAsync([slot.getSlotElementId()]);
googletag.pubads().refresh([slot]);
}
});
});
}
function refreshtopSlot() {
refreshSlot(topSlot);
}
function refreshmiddlerightSlot() {
refreshSlot(middlerightSlot);
}
function refreshbottomrightSlot() {
refreshSlot(bottomrightSlot);
}
function refreshbottomleftSlot() {
refreshSlot(bottomleftSlot);
}
но не знаю, как я могу их объединить, так как объявление обновляется после того, как оно "просматривается" в течение X секунд, какие-нибудь указатели / кто-нибудь может мне помочь?