複数の広告リクエストを処理する

プラットフォームを選択: HTML5 Android iOS tvOS

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