Banneranzeigen

Banneranzeigen sind rechteckige Anzeigen, die einen Teil des App-Layouts einnehmen. Adaptive Ankerbanner sind Anzeigen mit festem Seitenverhältnis, die auf dem Bildschirm bleiben, während Nutzer mit der App interagieren. Sie sind entweder oben oder unten auf dem Bildschirm verankert.

In diesem Leitfaden erfahren Sie, wie Sie eine adaptive Ankerbanneranzeige in eine Android-App laden.

Vorbereitung

Verwenden Sie immer Testanzeigen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von aktiven Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Am einfachsten lassen sich Testanzeigen laden, wenn Sie die spezielle Testanzeigenblock-ID für Android-Banner verwenden:

/21775744923/example/adaptive-banner

Es wurde speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können es in Ihren eigenen Apps beim Codieren, Testen und Entwickeln verwenden. Ersetzen Sie sie vor der Veröffentlichung Ihrer App durch Ihre eigene Anzeigenblock-ID.

Weitere Informationen zur Funktionsweise von Testanzeigen im Google Mobile Ads SDK finden Sie unter Testanzeigen aktivieren.

Anzeigenansichtscontainer definieren

Fügen Sie Ihrer Layout-XML-Datei eine Ansicht hinzu, die als Container für Ihre verankerte adaptive Banneranzeige dient:

<!-- Ad view container that fills the width of the screen and adjusts its
     height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Anzeigengröße festlegen

Legen Sie AdSize auf einen verankerten adaptiven Bannertyp mit einer bestimmten Breite fest:

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

AdManagerAdView zum Layout hinzufügen

Erstellen Sie ein AdManagerAdView mit der Anzeigengröße, die Sie dem Layout Ihrer App hinzufügen möchten:

// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Anzeige laden

Nachdem die AdManagerAdView eingerichtet ist, laden Sie als Nächstes eine Anzeige. Dazu wird die Methode loadAd() in der Klasse AdManagerAdView verwendet. Er nimmt einen AdManagerAdRequest-Parameter an, der Laufzeitinformationen wie Targeting-Informationen zu einer einzelnen Anzeigenanfrage enthält.

Hier ein Beispiel für das Laden einer Anzeige:

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

Ist der Vorgang erfolgreich, können in Ihrer App Banneranzeigen ausgeliefert werden.

Anzeige aktualisieren

Wenn Sie Ihren Anzeigenblock so konfiguriert haben, dass er aktualisiert wird, müssen Sie keine weitere Anzeige anfordern, wenn die Anzeige nicht geladen wird. Das Google Mobile Ads SDK berücksichtigt die Aktualisierungsrate, die Sie in der Ad Manager-Benutzeroberfläche angegeben haben. Wenn Sie die Aktualisierung nicht aktiviert haben, senden Sie eine neue Anfrage. Weitere Informationen zur Aktualisierung von Anzeigenblöcken, z. B. zum Festlegen einer Aktualisierungsrate, finden Sie unter Aktualisierungsrate der Anzeigen in mobilen Apps.

Anzeigenereignisse

Sie können eine Reihe von Ereignissen im Lebenszyklus der Anzeige erfassen, z. B. das Laden, die Anzeigenimpression und den Klick sowie das Öffnen und Schließen der Anzeige. Wir empfehlen, den Rückruf vor dem Laden des Banners festzulegen.
adView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});
adView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

Jede der überschreibbaren Methoden in AdListener entspricht einem Ereignis im Lebenszyklus einer Anzeige.

Überschreibbare Methoden
onAdClicked() Die Methode onAdClicked() wird aufgerufen, wenn ein Klick auf eine Anzeige erfasst wird.
onAdClosed() Die Methode onAdClosed() wird aufgerufen, wenn ein Nutzer nach dem Aufrufen der Ziel-URL einer Anzeige zur App zurückkehrt. Ihre App kann damit ausgesetzte Aktivitäten fortsetzen oder andere Aufgaben ausführen, die für die Interaktion erforderlich sind.
onAdFailedToLoad() Die Methode onAdFailedToLoad() ist die einzige, die einen Parameter enthält. Der Fehlerparameter vom Typ LoadAdError beschreibt, welcher Fehler aufgetreten ist. Weitere Informationen finden Sie in der Dokumentation zur Fehlerbehebung bei Anzeigenladefehlern.
onAdImpression() Die Methode onAdImpression() wird aufgerufen, wenn eine Impression für eine Anzeige erfasst wird.
onAdLoaded() Die Methode onAdLoaded() wird ausgeführt, wenn eine Anzeige vollständig geladen wurde. Wenn Sie das Hinzufügen von AdManagerAdView zu Ihrer Aktivität oder Ihrem Fragment verzögern möchten, bis Sie sicher sind, dass eine Anzeige geladen wird, können Sie das hier tun.
onAdOpened() Die Methode onAdOpened() wird aufgerufen, wenn eine Anzeige ein Overlay öffnet, das den Bildschirm bedeckt.

Hardwarebeschleunigung für Videoanzeigen

Damit Videoanzeigen in Ihren Banneranzeigen ausgeliefert werden können, muss die Hardwarebeschleunigung aktiviert sein.

Die Hardwarebeschleunigung ist standardmäßig aktiviert, kann aber von einigen Apps deaktiviert werden. Wenn dies auf Ihre App zutrifft, empfehlen wir, die Hardwarebeschleunigung für Activity-Klassen zu aktivieren, in denen Anzeigen verwendet werden.

Hardwarebeschleunigung aktivieren

Wenn sich Ihre App nicht richtig verhält, wenn die Hardwarebeschleunigung global aktiviert ist, können Sie sie auch für einzelne Aktivitäten steuern. Du kannst das android:hardwareAccelerated-Attribut für die Elemente <application> und <activity> in deiner AndroidManifest.xml verwenden, um die Hardwarebeschleunigung zu aktivieren oder zu deaktivieren. Im folgenden Beispiel wird die Hardwarebeschleunigung für die gesamte App aktiviert, aber für eine Aktivität deaktiviert:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Weitere Informationen zu den Optionen zur Steuerung der Hardwarebeschleunigung finden Sie im Leitfaden zur Hardwarebeschleunigung. Hinweis: Die Hardwarebeschleunigung kann nicht für einzelne Anzeigenaufrufe aktiviert werden, wenn die Aktivität deaktiviert ist. Die Hardwarebeschleunigung muss also für die Aktivität selbst aktiviert sein.

Manuelle Impressionszählung

Die manuelle Erfassung von Impressionen ist nur mit Creatives kompatibel, die direkt in Ad Manager getraffickt werden. Das gilt für Kampagnen mit Direktverkauf und hausinterne Kampagnen. Sie sollte nicht für Backfill-Anzeigen oder Anzeigen von Drittanbieternetzwerken verwendet werden. Weitere Informationen finden Sie unter Impressionen und Klicks zählen.

Sie können Impressions-Pings manuell an Ad Manager senden, wenn bestimmte Bedingungen für die Erfassung einer Impression gelten sollen. Aktivieren Sie dazu vor dem Laden einer Anzeige eine AdManagerAdRequest für manuelle Impressionen:

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();
val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

Wenn Sie feststellen, dass eine Anzeige erfolgreich zurückgegeben wurde und auf dem Bildschirm zu sehen ist, können Sie eine Impression manuell erfassen:

AdManagerAdView.recordManualImpression();
AdManagerAdView.recordManualImpression()

App-Ereignisse

Mit App-Ereignissen können Sie Anzeigen erstellen, über die Nachrichten an den App-Code gesendet werden können. Die App kann dann auf Grundlage dieser Nachrichten Maßnahmen ergreifen.

Mit AppEventListener können Sie auf Ad Manager-spezifische App-Ereignisse warten. Diese Ereignisse können jederzeit während des Lebenszyklus der Anzeige auftreten, auch bevor onAdLoaded() aufgerufen wird.

public interface AppEventListener {
  void onAppEvent(String name, String info);
}
interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

void onAppEvent(String name, String info) wird aufgerufen, wenn in einer Anzeige ein App-Ereignis auftritt. Diese Schnittstelle kann von Ihrer Aktivität oder einem anderen Objekt implementiert werden:

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}
import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

und dann an die AdManagerAdView übergeben:

AdManagerAdView.setAppEventListener(this);
AdManagerAdView.appEventListener = this

Im folgenden Beispiel wird gezeigt, wie Sie die Hintergrundfarbe Ihrer App je nach App-Ereignis mit dem Namen „color“ ändern:

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}
override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

Und hier ist das entsprechende Creative, das App-Ereignisnachrichten zu Farben an den Listener sendet:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Im Beispiel für Ad Manager-App-Ereignisse finden Sie eine Implementierung von App-Ereignissen in der API-Demo-App.

Java Kotlin

Zusätzliche Ressourcen

Beispiele auf GitHub

  • Beispiel für verankerte adaptive Banneranzeigen: Java | Kotlin

Nächste Schritte

Minimierbare Banner

Minimierbare Banneranzeigen sind Banneranzeigen, die zuerst als größeres Overlay mit einer Schaltfläche angezeigt werden, über die die Anzeige auf eine kleinere Größe minimiert werden kann. Sie können sie verwenden, um die Leistung weiter zu optimieren. Weitere Informationen finden Sie unter Minimierbare Banneranzeigen.

Adaptive Inline-Banner

Adaptive Inline-Banner sind im Vergleich zu adaptiven Ankerbannern größer und höher. Sie haben eine variable Höhe und können so hoch sein wie der Bildschirm des Geräts. Für Apps, in denen Banneranzeigen in scrollbaren Inhalten platziert werden, werden adaptive Inline-Banner anstelle von adaptiven Ankerbannern empfohlen. Weitere Informationen finden Sie unter Inline-Adaptive Banner.

Weitere Themen ansehen