Обработка нескольких запросов объявлений
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Большинство применений IMA SDK требуют управления только одним рекламным запросом за раз. Однако некоторые реализации пограничных случаев, такие как предварительная загрузка рекламных данных до того, как пользователь выберет видео, могут потребовать выполнения нескольких одновременных запросов. Поскольку рекламные запросы выполняются асинхронно, обеспечение связи правильного менеджера рекламы с правильным контекстом может показаться сложной задачей.
Для упрощения процесса дифференциации нескольких менеджеров рекламы IMA SDK для tvOS позволяет издателям передавать любое значение или объект в поле UserContext любого запроса рекламы. Это значение или объект затем можно получить в функции делегата AdsLoader:AdsLoadedWithData через атрибут userContext объекта IMAAdsLoadedData .
Пример
...
adsLoader = IMAAdsLoader(settings: nil)
adsLoader.delegate = self
let userContextA = {id: "Request A", element: videoElementA}
let userContextB = {id: "Request B", element: videoElementB}
let requestA = IMAAdsRequest(
adTagUrl: ViewController.AdTagURLString,
adDisplayContainer: adDisplayContainer,
contentPlayhead: contentPlayhead,
userContext: userContextA)
let requestB = IMAAdsRequest(
adTagUrl: ViewController.AdTagURLString,
adDisplayContainer: adDisplayContainer,
contentPlayhead: contentPlayhead,
userContext: userContextB)
adsLoader.requestAds(with: requestA)
adsLoader.requestAds(with: requestB)
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let userContext = adsLoadedData.userContext
print("Loaded ads for ID: " + userContext.id)
adsManager = adsLoadedData.adsManager
adsManager.initialize(with: nil)
}
func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) {
let userContext = adsLoadingErrorData.userContext
print("Error loading ads for ID: " + userContext.id)
}
...
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-29 UTC.
[null,null,["Последнее обновление: 2025-08-29 UTC."],[[["\u003cp\u003eThe IMA SDK for tvOS allows handling multiple concurrent ad requests by associating a unique context with each request.\u003c/p\u003e\n"],["\u003cp\u003ePublishers can provide a custom value or object using the \u003ccode\u003euserContext\u003c/code\u003e field during ad request creation.\u003c/p\u003e\n"],["\u003cp\u003eThis \u003ccode\u003euserContext\u003c/code\u003e can be retrieved in the \u003ccode\u003eadsLoader:adsLoadedWithData\u003c/code\u003e delegate method, enabling differentiation of responses.\u003c/p\u003e\n"],["\u003cp\u003eThis functionality simplifies managing ad responses in scenarios involving preloading ad data or simultaneous ad requests for different content.\u003c/p\u003e\n"]]],[],null,["Most uses of the IMA SDK only require managing a single ad request at a time. However some edge case implementations, such as preloading ad data before the user selects a video, may require making multiple concurrent requests. Since ad requests are made asynchronously, ensuring the proper ad manager is associated with the correct context can seem to be a daunting task.\n\nTo simplify the process of differentiating multiple ad managers, the IMA SDK for tvOS allows publishers to pass in any value or object to the [UserContext](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAdsRequest#-initwithadtagurl:addisplaycontainer:avplayervideodisplay:pictureinpictureproxy:usercontext:) field of any ad request. This value or object can then be retrieved in the [AdsLoader:AdsLoadedWithData](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Protocols/IMAAdsLoaderDelegate#-adsloader:adsloadedwithdata:) delegate function, via the [IMAAdsLoadedData](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAdsLoadedData) object's [userContext](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAdsLoadedData#usercontext) attribute.\n\nExample \n\n ...\n adsLoader = IMAAdsLoader(settings: nil)\n adsLoader.delegate = self\n\n let userContextA = {id: \"Request A\", element: videoElementA}\n let userContextB = {id: \"Request B\", element: videoElementB}\n let requestA = IMAAdsRequest(\n adTagUrl: ViewController.AdTagURLString,\n adDisplayContainer: adDisplayContainer,\n contentPlayhead: contentPlayhead,\n userContext: userContextA)\n let requestB = IMAAdsRequest(\n adTagUrl: ViewController.AdTagURLString,\n adDisplayContainer: adDisplayContainer,\n contentPlayhead: contentPlayhead,\n userContext: userContextB)\n adsLoader.requestAds(with: requestA)\n adsLoader.requestAds(with: requestB)\n\n ...\n\n // MARK: - IMAAdsLoaderDelegate\n\n func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {\n let userContext = adsLoadedData.userContext\n print(\"Loaded ads for ID: \" + userContext.id)\n adsManager = adsLoadedData.adsManager\n adsManager.initialize(with: nil)\n }\n\n func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) {\n let userContext = adsLoadingErrorData.userContext\n print(\"Error loading ads for ID: \" + userContext.id)\n }\n\n ..."]]