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

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

複数の広告マネージャーを区別するプロセスを簡素化するため、IMA SDK for HTML5 では広告リクエストの 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);
}
...