Konfigurowanie pakietu IMA SDK na potrzeby DAI

Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą wysyłać żądania reklam do dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w aplikacjach. Za pomocą pakietów IMA DAI SDK aplikacje wysyłają żądanie strumienia reklamy i treści wideo – VOD lub treści na żywo. Pakiet SDK zwraca wtedy połączony strumień wideo, dzięki czemu nie musisz zarządzać przełączaniem między reklamą a treściami wideo w aplikacji.

Wybierz interesujące Cię rozwiązanie DAI

Wyświetlanie bloków reklamowych w ramach dynamicznego wstawiania reklam

Z tego przewodnika dowiesz się, jak odtwarzać transmisję na żywo lub strumień VOD z wyświetlaniem bloków reklamowych w ramach dynamicznego wstawiania reklam za pomocą pakietu IMA DAI SDK na tvOS w odtwarzaczu wideo. Aby wyświetlić lub śledzić ukończoną przykładową integrację, pobierz przykładową aplikację do wyświetlania reklam w podcastach (Obj C lub Swift).

Omówienie wyświetlania bloków reklamowych w ramach dynamicznego wstawiania reklam w pakiecie IMA

Wdrażanie wyświetlania bloków reklamowych za pomocą pakietu IMA DAI SDK na tvOS obejmuje 2 główne komponenty:

  • StreamRequest: obiekt, który definiuje żądanie strumienia do serwerów reklamowych Google. Aby włączyć obsługę bloków reklamowych, musisz utworzyć plik manifestu za pomocą IMAPodStreamRequest lub IMAPodVODStreamRequest. Obie metody wymagają podania kodu sieci, a IMAPodStreamRequest dodatkowo niestandardowego klucza zasobu. Klucz interfejsu API jest opcjonalny.

  • IMAStreamManager: obiekt, który obsługuje komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. wysyła pingi śledzące i przekazuje wydawcy zdarzenia strumienia.

Wymagania wstępne

Zanim zaczniesz, musisz mieć:

  • Xcode 13 lub nowszy.
  • CocoaPods (preferowane), Swift Package Manager lub pobrana kopia pakietu IMA DAI SDK na tvOS.
  • Aplikacja na tvOS skonfigurowana już z pakietem IMA DAI SDK do odtwarzania strumieni wideo z reklamami DAI. Jeśli nie masz jeszcze takiej aplikacji, zalecamy użycie tvOS DAI BasicExample jako punktu wyjścia. W przykładzie BasicExample znajduje się baza kodu, do której odwołuje się ten przewodnik. Więcej informacji o wdrażaniu pakietu IMA DAI SDK znajdziesz w krótkim przewodniku.

Konfigurowanie zmiennych wyświetlania bloków reklamowych

Wszystkie zmiany wymagane w przypadku Pod Serving są wprowadzane w ViewController.swift w języku Swift lub ViewController.m w języku Objective-C. Fragmenty kodu w tym przewodniku domyślnie korzystają z języka Swift. Pierwszym krokiem jest zaktualizowanie zmiennych stałych.

Oto stałe żądania strumienia pakietu reklam, które należy dodać:

  • STREAM_URL (Używany tylko w przypadku transmisji na żywo): adres URL strumienia wideo podany przez manipulator pliku manifestu lub partnera zewnętrznego korzystającego z wyświetlania bloków reklamowych. Przed wysłaniem żądania musisz wstawić identyfikator strumienia podany przez pakiet IMA DAI SDK. W tym przypadku adres URL strumienia zawiera obiekt zastępczy "[[STREAMID]]", który przed wysłaniem żądania jest zastępowany identyfikatorem strumienia.
  • NETWORK_CODE: kod sieci na koncie Ad Managera 360.
  • CUSTOM_ASSET_KEY (Używany tylko w przypadku transmisji na żywo): niestandardowy klucz zasobu, który identyfikuje zdarzenie wyświetlania bloków reklamowych w usłudze Ad Manager 360. Może go utworzyć manipulator pliku manifestu lub partner zewnętrzny zajmujący się wyświetlaniem bloków reklamowych.
  • API_KEY (Używany tylko w przypadku transmisji na żywo): opcjonalny klucz interfejsu API, który może być wymagany do pobrania identyfikatora strumienia z pakietu IMA DAI SDK.

Zmień sekcję zmiennych w przykładzie, aby pasowała do tej:

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

  var adsLoader: IMAAdsLoader?
  ...

Utwórz żądanie strumienia bloku reklamowego na potrzeby transmisji na żywo lub VOD.

Wyświetlanie podów transmisji na żywo

Zmodyfikuj metodę requestStream, aby utworzyć prośbę o transmisję na żywo w formie podcastu, tworząc instancję 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)
  }

  ...

Wyświetlanie bloków reklamowych w strumieniu VOD

Zmodyfikuj metodę requestStream, aby utworzyć żądanie strumienia podów VOD, tworząc instancję 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)
  }

  ...

Edytowanie i ustawianie adresu URL strumienia

Wyświetlanie podów transmisji na żywo

Zmodyfikuj metody IMAAdsLoaderDelegate, używając streamManager.streamId, aby uzyskać identyfikator strumienia. Następnie wstaw identyfikator strumienia w miejsce STREAM_URL, zastępując "[[STREAMID]]". Po wprowadzeniu tej zmiany nowy adres URL transmisji można ustawić za pomocą 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
  }

  ...

Wyświetlanie bloków reklamowych w strumieniu VOD

Zmodyfikuj metody IMAAdsLoaderDelegate, używając streamManager.streamId, aby uzyskać identyfikator strumienia. Następnie poproś partnera technologicznego ds. wideo o URL strumienia i wywołaj funkcję IMAStreamManager.loadThirdPartyStream(), aby biblioteka IMA wczytała URL strumienia i wszystkie napisy zwrócone przez partnera technologicznego ds. wideo.

  ...

  // 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
  }

Czyszczenie zasobów IMA DAI

Gdy skończysz wysyłać żądania reklam i wyświetlać je w strumieniu z wyświetlaniem bloków reklamowych za pomocą pakietu IMA DAI SDK, zalecamy usunięcie wszystkich zasobów po zakończeniu sesji wyświetlania bloków reklamowych. Wywołaj funkcję IMAStreamManager.destroy(), aby zatrzymać odtwarzanie strumienia, śledzenie reklam i zwolnić wszystkie załadowane zasoby strumienia.

Inne przykłady użycia pakietu SDK tvOS znajdziesz w przykładach w GitHubie.