我在谷歌AdManager中创建了一个视频广告单元。手册在这里:https://support.google.com/admanager/answer/1181016?hl=en。我在我的Radiant Player中使用了生成的AdTagUrl (我想将它用于文章中包含的视频广告)。手册在这里:https://www.radiantmediaplayer.com/docs/latest/outstream-video-ads.html。它工作正常。但只有当AdManager发送一个有创意的。当AdManager没有发送任何创意时,我必须隐藏播放器。
有没有办法在加载播放器之前检测到AdManager是否发送了创意消息?
例如,如下所示:
function showOutstreamVideo()
{
//detect if there is an advertisement
var x = new XMLHttpRequest();
x.open("GET", AdTagUrl, true);
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200)
{
var vast = x.responseXML;
if(vast.getElementsByTagName("Ad").length>0)
{ //code for read, init and place player
}
}
}...but我不能用这个庞大的对象初始化Radiant Player。当我再次使用adTagUrl时,对于AdManager来说,这将是第二印象,这可能是不同的。当没有创意时,有没有解决方案来防止页面不必要地请求播放器脚本?
感谢并为我的英语道歉
发布于 2020-11-08 18:45:04
你有没有试过动态加载Radiant播放器?
var settings = {};
var vast = x.responseXML;
if(vast.getElementsByTagName("Ad").length>0) {
var player = document.createElement('script');
player.src = "https://cdn.radiantmediatechs.com/rmp/5.10.6/js/rmp.min.js";
document.body.appendChild(player);
var elementID = 'rmpPlayer';
var rmp = new RadiantMP(elementID);
rmp.init(settings);
}
发布于 2020-11-11 21:12:44
AdResponse: vast,(作为字符串)是播放器设置的正确选择。
var x = new XMLHttpRequest();
x.open("GET", outstreamAdTagUrl, true);
x.onreadystatechange = function ()
{ if (x.readyState == 4 && x.status == 200)
{ vast = x.responseText; //x.responeXML;
//if(vast.getElementsByTagName("Ad").length>0)
if(vast.length > 200) //it should be sufficient to determine if it is an ad or an empty VAST
{ //read and init player
var player = document.createElement('script');
document.body.appendChild(player);
player.onload = function(){runOutstream(vast);};
player.setAttribute('src', 'https://cdn.radiantmediatechs.com/rmp/5.10.6/js/rmp.min.js');
}
}
};
x.send(null);
function runOutstream(vast)
{
var settings = {
... license key etc...
autoplay: true,
adOutStreamMutedAutoplay: true,
ads: true,
//adsResponse: new XMLSerializer().serializeToString(vast), //when using responseXML()
adsResponse: vast,
adOutStream: true,
skin: 'outstream',
...other setting
};
var rmp = new RadiantMP('rmpPlayer');
rmp.init(settings);
}https://stackoverflow.com/questions/64711921
复制相似问题