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ą- IMAPodStreamRequestlub- IMAPodVODStreamRequest. Obie metody wymagają podania kodu sieci, a- IMAPodStreamRequestdodatkowo 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 aplikacji 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 bloków reklamowych, 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 zewnętrzny partner w zakresie wyświetlania 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 komponentó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.