Как обрабатывать несколько запросов объявлений

Выберите платформу: HTML5 Android iOS tvOS

В большинстве случаев при использовании IMA SDK нужно управлять только одним запросом объявления. Однако в некоторых случаях, например при предварительной загрузке данных объявления до того, как пользователь выберет видео, может потребоваться отправка нескольких одновременных запросов. Поскольку запросы объявлений выполняются асинхронно, может показаться, что связать нужный менеджер объявлений с правильным контекстом – непростая задача.

Чтобы упростить процесс различения нескольких менеджеров рекламы, IMA SDK для iOS позволяет издателям передавать любое значение или объект в поле 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)
}

...