使用 UserContext 处理多个广告请求

在大多数情况下,使用 IMA SDK 时只需一次管理一个广告请求。不过,某些极端情况的实现(例如在用户选择视频之前预加载广告数据)可能需要发出多个并发请求。由于广告请求是异步进行的,因此确保将适当的广告管理器与正确的上下文相关联似乎是一项艰巨的任务。

为了简化区分多个广告管理平台的流程,适用于 HTML5 的 IMA SDK 允许发布商向任何广告请求的 UserContext 字段传递任何值或对象。然后,您可以使用 getUserRequestContext() 方法在 AdsManagerLoadedEvent 处理程序中检索该值或对象。

示例

...
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);
}
...