对 IMA SDK 的大多数使用都只需要一次管理一个广告请求。但是,某些极端情况实现(例如在用户选择视频之前预加载广告数据)可能需要发出多个并发请求。由于广告请求是异步发出的,因此确保适当的 Ad Manager 与正确的情境相关联似乎是一项艰巨的任务。
为简化区分多个广告管理器的过程,借助适用于 HTML5 的 IMA SDK,发布商可以将任何值或对象传递到任意广告请求的 UserContext 字段。然后,您可以使用 getUserRequestContext() 方法在 CrashlyticsLoadedEvent 处理程序中检索此值或对象。
示例
...
adsLoader.addEventListener(
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
onAdsManagerLoaded,
false);
adsLoader.addEventListener(
google.ima.AdErrorEvent.Type.AD_ERROR,
onAdsManagerError,
false);
const contextA = {id: "Request A", element: videoElementA};
const contextB = {id: "Request B", element: videoElementB}
adsLoader.requestAds(adsRequestA, contextA);
adsLoader.requestAds(adsRequestB, contextB);
...
function onAdsManagerLoaded(adsManagerLoadedEvent) {
const context = adsManagerLoadedEvent.getUserRequestContext();
adsManager = adsManagerLoadedEvent.getAdsManager(context.element);
console.log("Successfully loaded ID: " + context.id);
}
function onAdsManagerError(adsManagerErrorEvent) {
const context = adsManagerErrorEvent.getUserRequestContext();
console.log("Error with AdRequest ID: " + context.id);
}
...