Erste Schritte mit der Android TV-Anzeigenbibliothek

Die Android TV-Anzeigenbibliothek bietet eine Benutzeroberfläche, über die Nutzer die Anzeigeneinstellungen auf Google TV verwalten können. In dieser Anleitung wird beschrieben, wie du die Android TV-Anzeigenbibliothek in deine vorhandene PAL-Android TV-App einbindest.

Vorbereitung

  • Führen Sie den Startleitfaden aus.
  • Android PAL SDK Version 20.0.1 oder höher

Transparenz und Einstellungen für Werbung

Die Android TV-Anzeigenbibliothek bietet Funktionen zur Darstellung von Anzeigentransparenz und Steuerelementen (AT&C) während Werbeunterbrechungen. Wenn Nutzer während einer In-Stream-Anzeige mit dem Symbol TV-Anzeigen von Google interagieren, wird das Menü für die Einstellungen für Anzeigen und Daten als System-Overlay von der TV-Launcher-App gerendert. Es enthält eine kurze URL, einen QR-Code, über den Nutzer mehr über die Anzeige erfahren können, und eine Schaltfläche, mit der sie verhindern können, dass dieselbe Anzeige noch einmal eingeblendet wird.

Das Symbol TV-Anzeigen von Google sollte mit denselben Anforderungen für das VAST-Symbol-Rendering wie das AdChoices gerendert werden.

Alt-Text

Wenn der Nutzer auf das Symbol TV-Anzeigen von Google klickt, werden ihm eine kurze URL und ein QR-Code für die Webseite Informationen zu dieser Anzeige (Informationsseite zu Anzeigen) angezeigt.

Alt-Text

Android TV-Anzeigenbibliothek einbinden

ATV-Anzeigenbibliothek importieren

Fügen Sie der Gradle-Datei auf App-Ebene (normalerweise app/build.gradle) die folgende Abhängigkeit für die Android TV-Anzeigenbibliothek hinzu:

dependencies {
   ...
   implementation 'com.google.android.tv:tv-ads:1.0.1'
}

AD_ID-Berechtigung deklarieren

Damit die Android TV-Werbebibliothek auf die Werbe-ID zugreifen kann, fügen Sie der Datei AndroidManifest.xml die folgende Zeile hinzu:

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

PAL SDK einbinden

Die Android TV-Anzeigenbibliothek verwendet die Klasse SignalCollector, um Kennungen auf dem Gerät zu erfassen, die für die Anforderung von Anzeigen erforderlich sind. Das PAL SDK verwendet die Klasse NonceRequest.Builder, um diese Signale zu lesen und eine Nonce zu erstellen.

Fügen Sie Ihrer PAL-App die fett formatierten Zeilen hinzu, um die Android TV-Anzeigenbibliothek für die Verwendung mit dem PAL SDK einzurichten:

public class VideoPlayerActivity extends Activity {
  ...
  private SignalCollector signalCollector;
  ...
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    signalCollector = new SignalCollector();
    ...
  }
  ...
  public generateNonceForAdRequest() {
    ...
    NonceRequest nonceRequest = NonceRequest.builder()
        ...
        .platformSignalCollector(signalCollector)
        .build();
    ...
  }

VAST-Antwort parsen

Wenn eine Anzeigenanfrage mit den Signalen der Android TV-Anzeigenbibliothek erfolgt, senden Google-Anzeigenserver eine VAST-Antwort mit dem <Icon>-Tag mit einem oder mehreren <IconClickFallbackImage>-Unterelementen für verschiedene Bildschirmauflösungen. Folgen Sie der Anleitung zum Parsen von VAST-XML-Antworten, um das VAST-Tag zu parsen.

Hier ist eine Beispielstruktur für VAST 4.2 des <Icon>-Tags und seiner untergeordneten Tags. Die relevanten Daten sind fett hervorgehoben.

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.2">
 <Ad id="123456">
  <Wrapper>
   ...
   <Creatives>
    ...
    <Creative id="7891011" AdID="ABCD123456EF" sequence="1">
     ...
     <Linear>
      ...
      <Icons>
       ...
       <Icon program="TV Ads by Google" width="106" height="20" xPosition="24" yPosition="20"
        duration="00:00:10" offset="00:00:00" apiFramework="VAST" altText="Why This Ad?">
        <StaticResource creativeType="image/png">
         <![CDATA[https://imasdk.googleapis.com/formats/ata/gtv_ads_badge.png]]>
        </StaticResource>
        <IconClicks>
         ...
         <IconClickThrough><![CDATA[https://myadcenter.google.com]]></IconClickThrough>
         <IconClickFallbackImages>
          <IconClickFallbackImage width="950" height="600">
           <AltText>Sample alt text</AltText>
           <StaticResource creativeType="image/png">
            <![CDATA[https://google.com?atvatc=1&atvatcmd=Eg8KDQoLbXV0ZV9hZF91cmwKAgoA]]>
           </StaticResource>
          </IconClickFallbackImage>
          ...
         </IconClickFallbackImages>
        </IconClicks>
       </Icon>
       ...
      </Icons>
     ...
     </Linear>
     ...
    </Creative>
    ...
   </Creatives>
   ...
  </Wrapper>
  ...
 </Ad>
</VAST>

Ebenso kann <IconClickFallbackImages> mithilfe der Beispiel-VAST 3.0-Struktur im PAL-Leitfaden zum Parsen von VAST 3.0-Antworten geparst werden.

Erstelle beim Parsen des VAST-Dokuments für jedes <IconClickFallbackImage>-Tag ein IconClickFallbackImage-Objekt und fülle es mit den geparsten Daten aus IconClickFallbackImage.Builder. Verwenden Sie IconClickFallbackImages.Builder, um die Liste der IconClickFallbackImage-Objekte an ein IconClickFallbackImages-Objekt zu übergeben, das das <IconClickFallbackImages>-Tag darstellt.

import com.google.android.tv.ads.IconClickFallbackImage;
import com.google.android.tv.ads.IconClickFallbackImages;
import java.util.Arrays;
...
  IconClickFallbackImages getIconClickFallbackImages(...) {
    // Use parsed VAST IconClickFallbackImages data to build a list of
    // IconClickFallbackImage objects.

    int parsedWidth;
    int parsedHeight;
    String parsedAltText;
    String parsedCreativeType;
    String parsedStaticResourceUri;
    // Read the <IconClickFallbackImage> node and its children to set
    // parsedWidth, parsedHeight, ...

    IconClickFallbackImages iconClickFallbackImages =
        IconClickFallbackImages.builder(
                Arrays.asList(
                    IconClickFallbackImage.builder()
                        .setWidth(parsedWidth)
                        .setHeight(parsedHeight)
                        .setAltText(parsedAltText)
                        .setCreativeType(parsedCreativeType)
                        .setStaticResourceUri(parsedStaticResourceUri)
                        .build()))
            .build();

    return iconClickFallbackImages;
  }

Render-AGB

Die Android TV-Anzeigenbibliothek bietet eine Methode AdsControlsManager.handleIconClick() zum Rendern eines AT&C-Menüs oder eines standardmäßigen VAST-IconClickFallbackImage.

Im folgenden Snippet wird die Android TV-Anzeigenbibliothek so eingerichtet, dass das AT&C-Menü und die Fallback-Bilder für Klicks auf das VAST-Symbol gerendert werden.

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.tv.ads.AdsControlsManager;
import com.google.android.tv.ads.IconClickFallbackImage;
import com.google.android.tv.ads.IconClickFallbackImages;
import java.util.ArrayList;
import java.util.List;

public final class VideoPlayerActivity extends Activity {
  ...
  private AdsControlsManager adsControlsManager;
  ...
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    adsControlsManager = new AdsControlsManager(this);
    ...
  }
  ...

  /**
   * Called when the user interacts with any VAST Icon.
   * @param view.
   */
  public void onVastIconClicked(View view) {
    IconClickFallbackImages iconClickFallbackImages;
    // Populate the IconClickFallbackImages object from the parsed VAST data.
    ...
    adsControlsManager.handleIconClick(iconClickFallbackImages);
    ...
  }
}

Wenn AdsControlsManager.handleIconClick() aufgerufen wird, wird ein Android-Activity gestartet. So können standardmäßige Lebenszyklus-Callbacks wie onPause() und onResume() verwendet werden, um Änderungen am Aktivitätszyklus zu erfassen.

[Optional] Benutzerdefinierten Fallback-Image-Renderer bereitstellen

Wenn für Ihre App spezielle Anforderungen gelten, z. B. Hardwareeinschränkungen oder UX-Einschränkungen, können Sie mit AdsControlsManager.setCustomFallbackImageRenderer() eine Rückruffunktion festlegen. Die Android TV-Anzeigenbibliothek prüft die Fallback-Bilder, um festzustellen, ob der bereitgestellte benutzerdefinierte Renderer verwendet werden kann. Ein benutzerdefiniertes Rendering wird nur für das VAST-IconClickFallbackImage und nicht für das AT&C-Menü verwendet.

import android.app.Activity;
import android.os.Bundle;
import com.google.android.tv.ads.AdsControlsManager;
import com.google.android.tv.ads.CustomFallbackImageRenderer;
import com.google.android.tv.ads.IconClickFallbackImages;
import java.util.List;

public final class VideoPlayerActivity extends Activity {
  ...
  private AdsControlsManager adsControlsManager;
  ...
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    adsControlsManager = new AdsControlsManager(this);
    adsControlsManager.setCustomFallbackImageRenderer(
        new CustomFallbackImageRendererImpl());
    ...
  }

  private static class CustomFallbackImageRendererImpl implements CustomFallbackImageRenderer {
    @Override
    public void render(IconClickFallbackImages iconClickFallbackImages) {
      // Render the fallback images using a custom layout
      ...
    }
  }
  ...
}

Google Feedback zur Android TV-Anzeigenbibliothek geben

Wir möchten wissen, welche Erfahrungen Sie mit der Einbindung und Migration von Android TV-Apps gemacht haben. Wenden Sie sich an Ihren Google Account Manager, um einen Termin mit einem unserer Entwickler zu vereinbaren.

Veröffentlichungsverlauf

Version Veröffentlicht am Hinweise
1.0.1 2025-01-09
  • Aktualisierungen bei unterstützten Formaten für Transparenz und Einstellungen für Anzeigen.
1.0.0 2023-05-16
  • Fügt Logging hinzu.
  • Die Unterstützung für minSdk wird auf API-Level 21 herabgesetzt.
  • Fehlerbehandlung und Abhängigkeiten wurden aktualisiert, um Abstürze zu beheben.
1.0.0-alpha02 2022-11-17
  • Das Android-Manifest wurde aktualisiert, sodass die Leanback-Funktion optional ist.
1.0.0-alpha01 2022-09-07
  • Erste Version