Pierwsze kroki z pakietem IMA DAI SDK

Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą wysyłać żądania reklam z dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w aplikacjach. Dzięki pakietom SDK IMA DAI aplikacje wysyłają żądania strumienia danych wideo z reklam i treści wideo – VOD lub treści na żywo. Pakiet SDK zwraca połączony strumień wideo, więc nie musisz już zarządzać przełączaniem się między reklamą a treścią wideo w aplikacji.

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

Blok reklamowy z dynamicznym wstawianiem reklam

W tym przewodniku pokazujemy, jak odtwarzać strumień podów reklamowych z dynamicznym wstawianiem reklam na żywo lub VOD za pomocą pakietu IMA DAI SDK na iOS i prostego odtwarzacza wideo. Jeśli chcesz zapoznać się z gotową próbką, pobierz przykład wyświetlania bloku reklamowego.

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

Implementacja podów wyświetlanych za pomocą pakietu IMA DAI SDK na iOS obejmuje 2 główne komponenty:

  • StreamRequest: obiekt definiujący żądanie strumienia do serwerów reklamowych Google. Aby włączyć obsługę podów, trzeba je utworzyć 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 śledzących i przekierowywanie zdarzeń strumienia do wydawcy.

Wymagania wstępne

Zanim zaczniesz, musisz mieć:

  • Xcode w wersji 13 lub nowszej.
  • CocoaPods (preferowane), Menedżer pakietów Swift lub pobrana kopia pakietu IMA DAI SDK na iOS.
  • Aplikacja na iOS skonfigurowana przez pakiet IMA DAI SDK do odtwarzania strumieni wideo z reklamami DAI. Jeśli nie masz jeszcze takiej aplikacji, na początek możesz skorzystać z podstawowego przykładu dynamicznego wstawiania reklam w iOS. BasicExample zawiera bazę kodu, do której odwołuje się ten przewodnik. Więcej informacji o implementowaniu pakietu IMA DAI SDK znajdziesz w krótkim przewodniku.

Konfigurowanie zmiennych wyświetlających bloki reklamowe

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

Oto stałe żądania strumienia bloku reklamowego, które musisz 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. Przed wysłaniem żądania powinno być wymagane wstawienie identyfikatora strumienia dostarczonego 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 Twojego konta Ad Managera 360.
  • CUSTOM_ASSET_KEY (używany tylko w transmisjach na żywo): niestandardowy klucz zasobu identyfikujący zdarzenie wyświetlania bloku reklamowego w usłudze Ad Manager 360. Można go utworzyć za pomocą manipulatora pliku manifestu lub zewnętrznego partnera obsługującego pody.
  • 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 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 inicjowanie 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 za pomocą inicjowania 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 parametru streamManager.streamId, aby uzyskać identyfikator strumienia. Potem wstaw identyfikator strumienia do pola STREAM_URL, zastępując "[[STREAMID]]". Po wprowadzeniu tej zmiany nowy adres URL transmisji będzie można ustawić za pomocą właściwości 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 parametru streamManager.streamId, aby uzyskać identyfikator strumienia. Następnie poproś partnera ds. technologii wideo o adres URL strumienia. Następnie wywołaj IMAStreamManager.loadThirdPartyStream(), by pakiet IMA wczytał adres URL strumienia 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. Za pomocą pakietu IMA DAI SDK na iOS wysyłasz żądania i wyświetlasz reklamy w strumieniu wyświetlania reklam w bloku reklamowym. Inne przykłady użycia pakietu IMA DAI SDK znajdziesz w przykładach na GitHubie.