最新的 Google Chromecast API 具有原生广告功能,它支持 VAST 和 VMAP 格式,但我们发现如果 XML 清单文件的 type="aplication *" 因此广告不起作用,则 chomecast 广告功能会忽略这一点。谷歌演员问题对此有任何想法吗?好的,替代解决方案是使用 IMA sdk 而不是标准的 CAF 广告功能。但是我无法开始播放广告,总是出现错误。我已经使用了此代码的示例:媒体加载后的google ima sdk 示例 我添加了 15 秒的超时,然后加载了广告,如下所示:
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, loadRequestData => {
Utils.initIMA();
setTimeout(()=>{
playerManager.stop();
Utils.requestAd('https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=12345678');
}, 15000);
return loadRequestData;
});
var Utils = {
requestAd: (adTagUrl) => {
let adsRequest = new google.ima.AdsRequest();
adsRequest.adTagUrl = adTagUrl;
adsRequest.linearAdSlotWidth = mediaElement.width;
adsRequest.linearAdSlotHeight = mediaElement.height;
adsRequest.nonLinearAdSlotWidth = mediaElement.width;
adsRequest.nonLinearAdSlotHeight = mediaElement.height / 3;
adsLoader.requestAds(adsRequest);
},
initIMA : () => {
let adDisplayContainer = new google.ima.AdDisplayContainer(document.getElementById('adContainer'), mediaElement);
adDisplayContainer.initialize();
adsLoader = new google.ima.AdsLoader(adDisplayContainer);
adsLoader.getSettings().setPlayerType('cast/client-side');
adsLoader.addEventListener(
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
Utils.onAdsManagerLoaded, false);
adsLoader.addEventListener(
google.ima.AdErrorEvent.Type.AD_ERROR, Utils.onAdError, false);
adsLoader.addEventListener(
google.ima.AdEvent.Type.ALL_ADS_COMPLETED, Utils.onAllAdsCompleted, false);
}
}
此行重现错误:adsLoader.requestAds(adsRequest); 未捕获的 TypeError:agcanPlayType 不是函数