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