Настройка IMA SDK для DAI

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

SDK IMA упрощают интеграцию мультимедийной рекламы в ваши веб-сайты и приложения. SDK IMA могут запрашивать рекламу с любого рекламного сервера , совместимого с VAST , и управлять воспроизведением рекламы в ваших приложениях. С SDK IMA DAI приложения отправляют запрос на потоковое видео, включающее рекламу и контент — либо видео по запросу, либо прямой эфир. Затем SDK возвращает объединенный видеопоток, так что вам не нужно управлять переключением между рекламой и контентом внутри вашего приложения.

Выберите интересующее вас решение DAI.

Подача капсул DAI

В этом руководстве показано, как воспроизводить прямые трансляции или видео по запросу (VOD) из DAI Pod Serving с помощью IMA DAI SDK для tvOS на видеоплеере. Чтобы посмотреть или выполнить пример интеграции, загрузите пример приложения Pod Serving ( на языке Objective C или Swift ).

Обзор системы подачи напитков в капсулах IMA DAI

Реализация Pod Serving с использованием IMA DAI SDK для tvOS включает в себя два основных компонента:

  • StreamRequest : Объект, определяющий запрос потока на рекламные серверы Google. Для включения Pod Serving его необходимо создать с помощью IMAPodStreamRequest или IMAPodVODStreamRequest . Оба метода требуют сетевого кода , а IMAPodStreamRequest также требует пользовательского ключа ресурса . Ключ API является необязательным.

  • IMAStreamManager : Объект, который обрабатывает обмен данными между видеопотоком и SDK IMA DAI, например, отправляет запросы на отслеживание и пересылает события потока издателю.

Предварительные требования

Прежде чем начать, вам потребуется следующее:

  • Xcode 13 или более поздняя версия.
  • CocoaPods (предпочтительно), Swift Package Manager или загруженная копия IMA DAI SDK для tvOS .
  • Приложение tvOS, уже настроенное с использованием SDK IMA DAI, воспроизводит видеопотоки с рекламой DAI. Если у вас еще нет такого приложения, мы рекомендуем использовать tvOS DAI BasicExample в качестве отправной точки. В BasicExample содержится код, на который ссылается это руководство. Для получения дополнительной информации о том, как внедрить SDK IMA DAI, см. руководство по быстрому запуску .

Настройте переменные для запуска пода.

Все изменения, необходимые для Pod Serving, вносятся в файл ViewController.swift на Swift или ViewController.m на Objective-C. В приведенных в этом руководстве фрагментах кода по умолчанию используется язык Swift. Первым шагом является обновление константных переменных.

Вот константы запроса потока рекламных блоков, которые необходимо добавить:

  • STREAM_URL ( используется только для прямых трансляций ): URL видеопотока, предоставленный вашим манипулятором манифеста или сторонним партнером, использующим Pod Serving. Перед отправкой запроса необходимо указать идентификатор потока, предоставленный SDK IMA DAI. В данном случае URL потока содержит заполнитель "[[STREAMID]]" , который заменяется идентификатором потока перед отправкой запроса.
  • NETWORK_CODE : Сетевой код для вашей учетной записи Ad Manager 360.
  • CUSTOM_ASSET_KEY ( используется только для прямых трансляций ): пользовательский ключ ресурса, идентифицирующий событие Pod Serving в Ad Manager 360. Он может быть создан вашим манипулятором манифеста или сторонним партнером по Pod Serving.
  • API_KEY ( используется только для прямых трансляций ): необязательный ключ API, который может потребоваться для получения идентификатора потока из SDK IMA DAI.

Измените раздел переменных в примере следующим образом:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl = ""
  static let networkCode = ""
  static let customAssetKey = ""
  static let APIKey = ""
  static let backupStreamURLString = ""

  var adsLoader: IMAAdsLoader?
  ...

Создайте запрос на прямую трансляцию или запись подкаста.

Прямая трансляция в формате подкаста

Измените метод requestStream , чтобы он создавал запрос на потоковую передачу данных в реальном времени, создав экземпляр класса IMAPodStreamRequest .

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

VOD-стриминг Под-сервис

Измените метод requestStream , чтобы он создавал запрос на потоковое воспроизведение VOD-видео, создав экземпляр класса IMAPodVODStreamRequest .

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

Отредактируйте и задайте URL-адрес потока.

Прямая трансляция в формате подкаста

Измените методы IMAAdsLoaderDelegate , используя streamManager.streamId для получения идентификатора потока. Затем вставьте идентификатор потока в STREAM_URL , заменив "[[STREAMID]]" . После внесения этого изменения новый URL потока можно установить с помощью videoDisplay.loadStream() .

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

VOD-стриминг Под-сервис

Измените методы IMAAdsLoaderDelegate , используя streamManager.streamId для получения идентификатора потока. Затем запросите URL-адрес потока у вашего партнера по видеотехнологиям (VTP) и вызовите IMAStreamManager.loadThirdPartyStream() , чтобы IMA загрузила URL-адрес потока и любые субтитры, возвращенные вашим партнером по видеотехнологиям.

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

Очистка активов IMA DAI

После успешного завершения запроса и показа рекламы в потоке Pod Serving с использованием IMA DAI SDK мы рекомендуем очистить все ресурсы после завершения сессии Pod Serving. Вызовите IMAStreamManager.destroy() , чтобы остановить воспроизведение потока, прекратить отслеживание рекламы и освободить все загруженные ресурсы потока.

Другие примеры использования tvOS SDK можно найти на GitHub .