透過 UserContext 處理多個廣告請求

大部分 IMA SDK 的使用都只需要一次管理一個廣告請求。然而,在某些極端案例中 (例如在使用者選取影片前預先載入廣告資料) 可能需要發出多個並行要求。由於廣告請求是非同步進行,因此確保適當的 Ad Manager 與正確的內容建立關聯並不容易。

為了簡化區分多個廣告管理員的程序,適用於 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);
}
...