Pierwsze kroki z pakietem IMA DAI SDK

Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą żądania reklam z Serwer reklam zgodny i zarządzanie odtwarzaniem reklam w aplikacjach. Dzięki pakietom SDK IMA DAI aplikacje żądania strumieniowego przesyłania danych reklamy i treści wideo – VOD lub treści na żywo. SDK zwraca wtedy typ połączony strumień wideo, dzięki czemu nie trzeba przełączać się między reklamą a treścią wideo. w Twojej aplikacji.

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

Blok reklamowy z dynamicznym wstawianiem reklam

Z tego przewodnika dowiesz się, jak odtworzyć blok reklamowy z dynamicznym wstawianiem reklam na żywo lub strumień VOD za pomocą pakiet IMA DAI SDK na tvOS z prostym odtwarzaczem. Jeśli chcesz obserwować wraz z gotowym przykładem pobierz przykładową aplikację wyświetlającą pody. (Obj C lub Swift).

Omówienie wyświetlania podów z IMA DAI

Implementacja wyświetlania podów za pomocą pakietu IMA DAI SDK na potrzeby systemu tvOS wiąże się z 2 głównymi komponenty:

  • StreamRequest: obiekt definiujący żądanie strumienia do Serwery reklamowe Google. Musi być utworzony za pomocą IMAPodStreamRequest lub IMAPodVODStreamRequest aby włączyć wyświetlanie bloków reklamowych. Obie metody wymagają kodu sieci oraz IMAPodStreamRequest wymaga też niestandardowego klucza pliku. Klucz interfejsu API to opcjonalnie.

  • IMAStreamManager: obiekt obsługujący komunikację między strumienia wideo i pakietu IMA DAI SDK, np. uruchamiania pingów śledzących czy i przekazywać wydawcy zdarzenia strumienia.

Wymagania wstępne

Zanim zaczniesz, musisz mieć:

Konfigurowanie zmiennych wyświetlających bloki reklamowe

Wszystkie zmiany wymagane do wyświetlania podów są wprowadzane w ViewController.swift w: Swift lub ViewController.m w Objective-C. Fragmenty tego przewodnika domyślnie używany jest język Swift. Pierwszym krokiem jest zaktualizowanie zmiennych stałych.

Oto stałe żądania strumienia bloku reklamowego, które musisz dodać:

  • STREAM_URL (tylko w przypadku transmisji na żywo): adres URL strumienia wideo podany przez za pomocą manipulatora manifestu lub partnera zewnętrznego, który obsługuje bloki reklamowe. Powinna musisz wstawić identyfikator strumienia dostarczony przez pakiet IMA DAI SDK przed przesłać prośbę. W tym przypadku URL transmisji zawiera zmienną, "[[STREAMID]]", która jest zastępowana identyfikatorem strumienia, przed utworzeniem użytkownika.
  • NETWORK_CODE: kod sieci Twojego konta Ad Managera 360.
  • CUSTOM_ASSET_KEY (używany tylko w transmisjach na żywo): niestandardowy klucz pliku, który identyfikuje zdarzenie wyświetlenia bloku reklamowego w usłudze Ad Manager 360. Kto może ją utworzyć za pomocą manipulatora manifestu lub zewnętrznego partnera obsługującego pody.
  • API_KEY (używany tylko w przypadku transmisji na żywo): opcjonalny klucz interfejsu API, którego wymagane do pobrania identyfikatora strumienia z pakietu IMA DAI SDK.

Zmień sekcję zmiennej w przykładzie tak, aby była zgodna z tym fragmentem:

...
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?
  ...

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

Blok reklamowy w transmisjach na żywo

Zmodyfikuj metodę requestStream, aby utworzyć żądanie strumienia bloku reklamowego na żywo przez: 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

Zmień metodę requestStream, aby utworzyć żądanie strumienia bloku reklamowego 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 transmisji

Blok reklamowy w transmisjach na żywo

Zmodyfikuj metody IMAAdsLoaderDelegate, używając streamManager.streamId do pobierz identyfikator strumienia. Następnie wstaw identyfikator strumienia do pola STREAM_URL, zastępując "[[STREAMID]]" Po wprowadzeniu tej zmiany nowy URL transmisji będzie można ustawiono za pomocą funkcji 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 do pobierz identyfikator strumienia. Następnie poproś o adres URL transmisji za pomocą używanej technologii wideo. partnera (VTP) i wywołaj IMAStreamManager.loadThirdPartyStream(), by mieć IMA wczytaj 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. Zamawiasz i wyświetlasz reklamy w strumieniu bloku reklamowego z pakiet IMA DAI SDK dla tvOS Aby zobaczyć inne przykłady użycia pakietu IMA DAI SDK: znajdziesz w przykładach na GitHubie.