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

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.

W tym przewodniku pokazujemy, jak odtwarzać strumień wyświetlania bloków reklamowych z DAI na Androida za pomocą pakietu IMA Android DAI SDK z prostym odtwarzaczem wideo do odtwarzania strumieni na żywo i VOD. Jeśli chcesz wyświetlić lub śledzić ukończoną przykładową integrację, pobierz przykład wyświetlania bloku reklamowego.

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

  • 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ą ImaSdkFactory.createPodStreamRequest() lub ImaSdkFactory.createPodVodStreamRequest(). Te metody wymagają kodu sieci, a createPodStreamRequest wymagają też niestandardowego klucza zasobu i opcjonalnego klucza interfejsu API. Zawierają też inne parametry opcjonalne.

  • StreamManager: 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

Konfigurowanie zmiennych obsługi poda

Wszystkie zmiany niezbędne do wyświetlania bloków reklamowych są wprowadzane w pliku SampleAdsWrapper.java. 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 w bloku reklamowym w usłudze Ad Manager 360. Może go utworzyć manipulator pliku manifestu lub zewnętrzny partner obsługujący 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.

Podstawowy przykład dynamicznego wstawiania reklam w Androidzie jest przeznaczony do odtwarzania różnych typów strumieni, ale w przypadku wyświetlania bloków reklamowych jest skonfigurowany tak, aby odtwarzać tylko jeden strumień. Zmień sekcję zmiennej w przykładzie tak, aby pasowała do tego:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "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]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

Aby włączyć wyświetlanie bloków reklamowych, utwórz żądanie strumienia na żywo lub bloku reklamowego VOD

Wyświetlanie bloku reklamowego transmisji na żywo

Usuń metodę buildStreamRequest(), która była używana do przełączania się między tworzeniem różnych typów strumieni. Następnie zmień requestAndPlayAds() na wywoływanie ImaSdkFactory.createPodStreamRequest(), aby utworzyć aktywny blok reklamowy wyświetlający żądanie reklamy. Na koniec poproś o transmisję za pomocą AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Wyświetlanie bloku reklamowego w strumieniu VOD

Usuń metodę buildStreamRequest(), która była używana do przełączania się między tworzeniem różnych typów strumieni. Następnie zmień requestAndPlayAds() na wywoływanie ImaSdkFactory.createPodVodStreamRequest(), aby utworzyć blok reklamowy VOD wyświetlający żądanie reklamy. Na koniec poproś o transmisję za pomocą AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Edytowanie i ustawianie adresu URL transmisji

Wyświetlanie bloku reklamowego transmisji na żywo

Zadzwoń pod numer StreamManager.getStreamId(), aby uzyskać identyfikator strumienia. Należy go potem wstawić do tabeli STEAM_URL, zastępując "[[STREAMID]]". Po wprowadzeniu tej zmiany nowy adres URL transmisji można ustawić za pomocą parametru videoPlayer.setStreamUrl().

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

Wyświetlanie bloku reklamowego w strumieniu VOD

Zadzwoń pod numer StreamManager.getStreamId(), aby uzyskać identyfikator strumienia. Następnie poproś partnera w zakresie technologii wideo (VTP) o adres URL transmisji. Następnie wywołaj StreamManager.loadThirdPartyStream(), aby IMA wczytała adres URL transmisji i wszystkie napisy zwrócone przez TVP.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

Przy włączonym wyświetlaniu bloków IMA nie wywołuje wywołań VideoStreamPlayer.loadUrl(), więc możesz usunąć z niej wszystkie wywołania videoPlayer.setStreamUrl() i videoPlayer.play().

Znakomicie. Żądasz i wyświetlasz reklamy w bloku reklamowym z pakietem IMA Android DAI SDK. Inne przykłady używanych pakietów SDK do Androida znajdziesz w przykładach na GitHubie.