Banneranzeigen einrichten

Banneranzeigen sind rechteckige Anzeigen, die einen Teil des App-Layouts einnehmen. Adaptive Ankerbanner sind Anzeigen mit einem festen 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 wird beschrieben, wie Sie eine adaptive Ankerbanneranzeige in eine Android-App laden.

Vorbereitung

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von Live-Anzeigen. Andernfalls kann es zu einer Sperrung Ihres Kontos kommen.

Testanzeigen lassen sich unter Android am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Banner laden:

/21775744923/example/adaptive-banner

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

Weitere Informationen zur Funktionsweise von Google Mobile Ads SDK (Legacy)-Testanzeigen finden Sie unter Testanzeigen aktivieren.

Anzeigenaufruf definieren

XML-Layout

Fügen Sie Ihrer XML-Layoutdatei eine Ansicht hinzu, die als Container für Ihre adaptive Ankerbanneranzeige 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" />

Jetpack Compose

  1. Fügen Sie den Ordner JetpackCompose Utilities ein. Dieser Ordner enthält Hilfsprogramme zum Erstellen des AdView-Objekts und der Assets.

  2. AdView verfassen:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

Anzeigengröße festlegen

Große adaptive Banner bieten ein größeres Format, das für Layouts ohne Scrollen konzipiert ist. Im Vergleich zu standardmäßigen adaptiven Ankerbannern ermöglichen diese Banner eine größere maximale Höhe von bis zu 20% der Bildschirmhöhe und zwischen 50 und 150 dp. Dieser größere Bereich ist für Videoinhalte optimiert.

Legen Sie für AdSize einen adaptiven Ankerbannertyp mit einer bestimmten Breite fest:

Java


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

Kotlin


// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

Legen Sie eine Anzeigengröße fest, die kleiner oder gleich der Bildschirmgröße des Geräts ist. Verwenden Sie die Methode Resources.getDisplayMetrics, um die maximale Bildschirmgröße zu ermitteln. Für die Abmessungen des AdSize-Objekts werden dichteunabhängige Pixel (dp) verwendet. Rechnen Sie die Bildschirmgröße beim Vergleichen von Pixel in dp um. Weitere Informationen zu Größenbeschränkungen finden Sie unter Fehlerbehebung bei nicht erzielten Impressionen in Ad Manager.

AdManagerAdView zum Layout hinzufügen

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

Java


// 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);

Kotlin


// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

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

Jetpack Compose


val adView = remember { AdManagerAdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_BANNER_AD_UNIT_ID

// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

Anzeige laden

Im folgenden Beispiel wird eine adaptive Ankerbanneranzeige mit einer Breite von 360 in ein AdManagerAdView-Objekt geladen:

Java

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

Kotlin

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

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 werden kann. Google Mobile Ads SDK (Legacy) berücksichtigt alle Aktualisierungsraten, die Sie in der Ad Manager-Benutzeroberfläche angegeben haben. Wenn Sie die Aktualisierung nicht aktiviert haben, stellen 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.

Anzeigenressource freigeben

Wenn Sie eine Banneranzeige nicht mehr benötigen, können Sie die Ressourcen der Banneranzeige freigeben.

Wenn Sie die Ressource der Anzeige freigeben möchten, entfernen Sie die Anzeige aus der Ansichtshierarchie und löschen Sie alle Verweise:

Java

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Kotlin

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

Jetpack Compose

DisposableEffect(Unit) {
  // Destroy the AdView to prevent memory leaks when the screen is disposed.
  onDispose { adView.destroy() }
}

Anzeigenereignisse

Sie können auf eine Reihe von Ereignissen im Lebenszyklus der Anzeige warten, darunter das Laden, die Anzeigenimpression und der Klick sowie das Öffnen und Schließen der Anzeige. Es wird empfohlen, den Callback vor dem Laden des Banners festzulegen.

Java

if (adView != null) {
  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(@NonNull 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.
        }
      });
}

Kotlin

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 für eine Anzeige erfasst wird.
onAdClosed() Die Methode onAdClosed() wird aufgerufen, wenn ein Nutzer zur App zurückkehrt, nachdem er die Ziel-URL einer Anzeige aufgerufen hat. Ihre App kann sie verwenden, um angehaltene Aktivitäten fortzusetzen oder andere erforderliche Aufgaben auszuführen, um sich auf die Interaktion vorzubereiten.
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 zum Debugging von Fehlern beim Laden von Anzeigen.
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 beispielsweise die AdManagerAdView erst dann Ihrer Aktivität oder Ihrem Fragment hinzufügen möchten, wenn 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 Banneranzeigenansichten erfolgreich ausgeliefert werden können, muss die Hardwarebeschleunigung aktiviert sein.

Die Hardwarebeschleunigung ist standardmäßig aktiviert, kann aber in 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 Ihre App bei global aktivierter Hardwarebeschleunigung nicht ordnungsgemäß funktioniert, können Sie diese auch für einzelne Aktivitäten ein- und ausschalten. Verwenden Sie das Attribut android:hardwareAccelerated für die Elemente <application> und <activity> in Ihrem AndroidManifest.xml, 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 Optionen zum Steuern der Hardwarebeschleunigung finden Sie im Leitfaden zur Hardwarebeschleunigung. Einzelne Anzeigenaufrufe können nicht für die Hardwarebeschleunigung aktiviert werden, wenn die Aktivität deaktiviert ist. Die Aktivität selbst muss also die Hardwarebeschleunigung aktiviert haben.

Manuelle Zählung von Impressionen

Die manuelle Erfassung von Impressionen ist nur mit direkt verkauften und hausinternen Kampagnen mit Creatives kompatibel, die direkt in Ad Manager getraffickt werden. Sie sollte nicht für Backfill- oder Drittanbieter-Werbenetzwerkanzeigen verwendet werden. Weitere Informationen finden Sie unter Impressionen und Klicks zählen.

Sie können Impressions-Pings manuell an Ad Manager senden, wenn Sie spezielle Bedingungen dafür haben, wann eine Impression erfasst werden soll:

Java

if (adManagerAdView != null) {
  adManagerAdView.setManualImpressionsEnabled(true);
}

Kotlin

adManagerAdView?.setManualImpressionsEnabled(true)

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

Java

if (adManagerAdView != null) {
  adManagerAdView.recordManualImpression();
}

Kotlin

adManagerAdView?.recordManualImpression()

App-Ereignisse

Mit App-Ereignissen können Sie Anzeigen erstellen, die Nachrichten an den App-Code senden. Die App kann dann basierend auf diesen Nachrichten Aktionen ausführen.

Mit AppEventListener können Sie Ad Manager-spezifische App-Ereignisse erfassen. Diese Ereignisse können jederzeit während des Lebenszyklus der Anzeige auftreten, sogar vor dem Aufruf von onAdLoaded().

Legen Sie den AppEventListener auf Ihrem AdManagerAdView fest:

Java

if (adManagerAdView != null) {
  adManagerAdView.setAppEventListener(this);
}

Kotlin

adManagerAdView?.appEventListener = this

Im folgenden Beispiel wird gezeigt, wie Sie die Hintergrundfarbe Ihrer App abhängig von einem App-Ereignis mit dem Namen „color“ ändern:

Java

@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
  if (name.equals("color")) {
    switch (info) {
      case "green":
        // Set background color to green.
        break;
      case "blue":
        // Set background color to blue.
        break;
      default:
        // Set background color to black.
        break;
    }
  }
}

Kotlin

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 mit 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>

Ein Beispiel für die Implementierung von App-Ereignissen in der API-Demo-App finden Sie im Beispiel für Ad Manager-App-Ereignisse.

Java Kotlin JetpackCompose

Nächste Schritte

Minimierbare Banner

Minimierbare Banneranzeigen sind Banneranzeigen, die zuerst als größeres Overlay mit einer Schaltfläche zum Minimieren der Anzeige auf eine kleinere Größe dargestellt werden. 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 größer und höher als adaptive Ankerbanner. Sie haben eine variable Höhe und können so hoch wie der Gerätebildschirm sein. Adaptive Inline-Banner werden gegenüber adaptiven Ankerbannern für Apps empfohlen, in denen Banneranzeigen in scrollbaren Inhalten platziert werden. Weitere Informationen finden Sie unter Adaptive Inline-Banner.

Weitere Themen entdecken