UserContext を使用して複数の広告リクエストを処理する

ほとんどの場合、IMA SDK を使用する場合、広告リクエストを一度で管理するだけで済みます。ただし、ユーザーが動画を選択する前に広告データをプリロードするなど、一部のエッジケースの実装では、複数のリクエストを同時に行う必要があります。広告リクエストは非同期で行われるため、適切なアド マネージャーが適切なコンテキストに関連付けられていることを確認するのは困難に思えるかもしれません。

複数のアド マネージャーを区別するプロセスを簡素化するため、IMA SDK for HTML5 では、パブリッシャーは任意の値またはオブジェクトを広告リクエストの UserContext フィールドに渡すことができます。この値またはオブジェクトは、AdsManagerLoadedEvent ハンドラで getUserRequestContext() メソッドを使用して取得できます。

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