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

W tym przewodniku pokazujemy, jak odtworzyć blok reklamowy z dynamicznym wstawianiem reklam na żywo lub strumień VOD, wykorzystując przy tym pakiet IMA DAI SDK na iOS z prostym odtwarzaczem. Jeśli chcesz obserwować wraz z pełną wersją przykład wyświetlania bloku reklamowego.

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

Implementacja wyświetlania bloków reklamowych za pomocą pakietu IMA DAI SDK na iOS 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ć:

  • Xcode w wersji 13 lub nowszej.
  • CocoaPods (preferowane), Menedżer pakietów Swift lub pobranej kopii IMA DAI SDK na iOS
  • Aplikacja na iOS skonfigurowana przez pakiet IMA DAI SDK do odtwarzania strumieni wideo Reklamy DAI. Jeśli nie masz jeszcze takiej aplikacji, zalecamy skorzystanie z DAI w iOS BasicExample jako i punktu początkowego. BasicExample zawiera bazę kodu, do której odwołuje się ten Google. Więcej informacji o wdrażaniu pakietu IMA DAI SDK znajdziesz tutaj: Krótki przewodnik

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 kodu w tym przewodniku domyślnie używany jest język Swift. Pierwszym krokiem jest zaktualizowanie zmiennych stałych.

Oto stałe żądania strumienia bloku reklamowego, które należy 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 transmisji na żywo

Zmodyfikuj metodę requestStream, aby utworzyć żądanie strumienia podów 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

Zmodyfikuj metodę requestStream, aby utworzyć żądanie strumienia podów VOD 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 transmisji 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). Następnie 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 na iOS. Aby zobaczyć inne przykłady użycia pakietu IMA DAI SDK: znajdziesz w przykładach na GitHubie.