В большинстве случаев использование IMA SDK требует обработки только одного запроса на показ рекламы за раз. Однако в некоторых исключительных случаях, например, при предварительной загрузке данных о рекламе перед выбором пользователем видео, может потребоваться выполнение нескольких одновременных запросов. Поскольку запросы на показ рекламы выполняются асинхронно, обеспечение связи соответствующего менеджера рекламы с нужным контекстом может показаться сложной задачей.
Для упрощения процесса различения нескольких менеджеров рекламы, IMA SDK для 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);
}
...