Pierwsze kroki z pakietem IMA DAI SDK

Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą żądać reklam z dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w Twoich aplikacjach. Dzięki pakietom IMA DAI aplikacje mogą wysyłać żądania strumienia w przypadku reklam i treści wideo (VOD lub na żywo). Pakiet SDK zwraca następnie połączony strumień wideo, dzięki czemu nie musisz zarządzać przełączaniem między reklamami wideo a treściami wideo w aplikacji.

Wybierz rozwiązanie DAI, które Cię interesuje

Blok reklamowy z dynamicznym wstawianiem reklam

Z tego przewodnika dowiesz się, jak odtwarzać blok z dynamicznym wstawianiem reklam wyświetlających na żywo lub strumień VOD przy użyciu pakietu IMA DAI SDK na urządzenia tvOS z użyciem prostego odtwarzacza wideo. Jeśli chcesz wykorzystać pełną próbkę, pobierz przykładową aplikację do obsługi podów (Obj C lub Swift).

Omówienie wyświetlania bloków reklamowych IMA DAI

Wdrożenie bloków reklamowych obsługujących pakiet IMA DAI SDK w tvOS obejmuje 2 główne komponenty:

  • StreamRequest: obiekt określający żądanie strumienia wysyłane do serwerów reklamowych Google. Aby włączyć wyświetlanie podów, należy utworzyć go za pomocą IMAPodStreamRequest lub IMAPodVODStreamRequest. Obie metody wymagają kodu sieci, a IMAPodStreamRequest wymaga też niestandardowego klucza zasobu. Klucz interfejsu API jest opcjonalny.

  • IMAStreamManager: obiekt obsługujący komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. uruchamianie pingów śledzenia i przekazywania zdarzeń strumienia do wydawcy.

Wymagania wstępne

Zanim zaczniesz, będziesz mieć:

  • Xcode 13 lub nowszy.
  • CocoaPods (preferowane), Menedżer pakietów Swift lub pobrana kopia pakietu IMA SDK na tvOS.
  • Aplikacja na tvOS ze skonfigurowanym pakietem IMA DAI SDK do odtwarzania strumieni wideo z reklamami DAI. Jeśli nie masz jeszcze takiej aplikacji, jako punktu wyjścia użyj obiektu tvOS DAI BasicExample. Element BasicExample zawiera bazę kodu, do której odwołuje się ten przewodnik. Więcej informacji o implementacji pakietu IMA DAI SDK znajdziesz w krótkim przewodniku.

Konfigurowanie zmiennych obsługi poda

Wszystkie zmiany potrzebne do wyświetlania podów są wprowadzane w języku ViewController.swift w języku Swift lub ViewController.m w Objective-C. Fragmenty w tym przewodniku domyślnie używają języka Swift. Pierwszym krokiem jest zaktualizowanie zmiennych stałych.

Oto stałe żądania strumienia bloku reklamowego, 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, który korzysta z bloków reklamowych. Powinno ono wymagać, by przed wysłaniem żądania wstawić identyfikator strumienia z pakietu IMA DAI SDK. W tym przypadku URL strumienia przed wysłaniem żądania zawiera obiekt zastępczy "[[STREAMID]]", który jest zastępowany identyfikatorem strumienia.
  • NETWORK_CODE: kod sieci powiązany z kontem Ad Managera 360.
  • CUSTOM_ASSET_KEY (używany tylko w przypadku transmisji na żywo): niestandardowy klucz zasobu, który identyfikuje zdarzenie wyświetlania bloku reklamowego w usłudze Ad Manager 360. Może go utworzyć manipulator pliku manifestu lub partner obsługujący pody innej firmy.
  • API_KEY (używany tylko w przypadku transmisji na żywo): opcjonalny klucz interfejsu API, który może być wymagany do pobierania identyfikatora strumienia z pakietu IMA DAI SDK.

Zmień sekcję zmiennej w przykładzie tak, aby pasowała do tego:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

Tworzenie żądania transmisji na żywo lub bloku reklamowego VOD

Wyświetlanie bloku reklamowego przez transmisję na żywo

Zmodyfikuj metodę requestStream, aby utworzyć żądanie strumienia bloków reklamowych na żywo, inicjując 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 bloku reklamowego w strumieniu VOD

Zmodyfikuj metodę requestStream, aby utworzyć żądanie strumienia bloków reklamowych VOD, inicjując 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 transmisji

Wyświetlanie bloku reklamowego przez transmisję na żywo

Aby uzyskać identyfikator strumienia, zmodyfikuj metody IMAAdsLoaderDelegate za pomocą streamManager.streamId. Następnie wstaw identyfikator strumienia w: STREAM_URL, zastępując wartość "[[STREAMID]]". Po wprowadzeniu tej zmiany nowy adres URL transmisji można ustawić za pomocą parametru 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 bloku reklamowego w strumieniu VOD

Aby uzyskać identyfikator strumienia, zmodyfikuj metody IMAAdsLoaderDelegate za pomocą streamManager.streamId. Następnie poproś swojego partnera w zakresie technologii wideo (VTP) o adres URL strumienia i wywołaj metodę IMAStreamManager.loadThirdPartyStream(), by usługa IMA wczytała adres URL transmisji i wszystkie napisy zwrócone przez TVP.

  ...

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

Znakomicie. Żądasz i wyświetlasz reklamy w bloku reklamowym z pakietem IMA DAI SDK na tvOS. Inne przykłady użycia pakietu IMA DAI SDK znajdziesz w przykładach na GitHubie.