In diesem Leitfaden wird beschrieben, wie Sie eine adaptive Ankerbanneranzeige in eine Android-App laden.
Vorbereitung
- Einrichten Google Mobile Ads SDK (Legacy).
- Optional: Wenn Sie ein Beispiel für die Implementierung von Banneranzeigen sehen möchten, wählen Sie eine der folgenden Beispiel-Apps aus:
- Das Beispiel für adaptive Ankerbanneranzeigen in Java, Kotlin, oder Jetpack Compose
- Die Demo für erweiterte Funktionen in Java oder Kotlin
Immer mit Testanzeigen testen
Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von Live-Anzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Testanzeigen lassen sich unter Android am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Banner laden:
ca-app-pub-3940256099942544/9214589741
Diese ID ist speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können sie in Ihren eigenen Apps verwenden, während Sie programmieren, testen und Fehler beheben. Ersetzen Sie sie einfach durch Ihre eigene Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.
Weitere Informationen zur Funktionsweise von Google Mobile Ads SDK (Legacy) Testanzeigen finden Sie unter Testanzeigen aktivieren.
Anzeigenansicht 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
Fügen Sie den JetpackCompose Utilities Ordner hinzu. Dieser Ordner enthält Hilfsfunktionen zum Erstellen des
AdView-Objekts und von Assets.AdViewschreiben:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
Anzeigengröße festlegen
Große adaptive Banner sind ein größeres Format, das für Layouts ohne Scrollfunktion entwickelt wurde. Im Vergleich zu standardmäßigen adaptiven Ankerbannern haben diese Banner eine größere maximale Höhe von bis zu 20% der Bildschirmhöhe und zwischen 50 und 150 dp. Dieser zusätzliche Platz ist für Videoinhalte optimiert.
Legen Sie für AdSize einen
adaptiven Ankerbanner-Typ mit einer bestimmten Breite fest:
Java
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(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
Resources.getDisplayMetrics
Methode, um die maximale Bildschirmgröße zu ermitteln. Die Abmessungen des AdSize-Objekts werden in dichteunabhängigen Pixeln (dp) angegeben. Beim Vergleich müssen Sie die Bildschirmgröße von Pixeln in dp umrechnen.
Weitere Informationen zu Größenbeschränkungen finden Sie unter
Größenanforderungen für Anzeigenanfragen.
AdView zum Layout hinzufügen
Erstellen Sie ein AdView-Objekt mit der Anzeigengröße, das Sie dem Layout Ihrer
App hinzufügen können:
Java
// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360));
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
Kotlin
// Create a new ad view.
val adView = AdView(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 { AdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = 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()) { BannerAd(adView, modifier) }
}
Anzeige laden
Im folgenden Beispiel wird eine adaptive Ankerbanneranzeige mit einer Breite von 360 in ein AdView-Objekt geladen:
Java
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
Anzeige aktualisieren
Wenn Sie Ihren Anzeigenblock für die Aktualisierung konfiguriert haben, müssen Sie keine weitere Anzeige anfordern, wenn das Laden der Anzeige fehlschlägt. Google Mobile Ads SDK (Legacy) berücksichtigt jede Aktualisierungsrate die Sie in der AdMob-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 Automatische Aktualisierung für Banneranzeigen verwenden.
Anzeigenressource freigeben
Wenn Sie eine Banneranzeige nicht mehr verwenden, können Sie die Ressourcen der Banneranzeige freigeben.
Entfernen Sie dazu die Anzeige aus der Ansichtshierarchie und löschen Sie alle Verweise darauf:
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 eine Reihe von Ereignissen im Lebenszyklus der Anzeige erfassen, darunter das Laden, die Anzeigenimpression und ‑klicks sowie das Öffnen und Schließen von Anzeigen. Es wird empfohlen, den Callback festzulegen, bevor Sie das Banner laden.
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 onAdClicked()
Methode wird aufgerufen, wenn ein Klick auf eine Anzeige erfasst wird.
|
onAdClosed() |
Die onAdClosed()
Methode wird aufgerufen, wenn ein Nutzer nach dem Aufrufen der Ziel-URL einer Anzeige
zur App zurückkehrt. Ihre App kann damit angehaltene Aktivitäten fortsetzen oder
andere Aufgaben ausführen, die erforderlich sind, um die Interaktion zu ermöglichen.
Ein Beispiel für die Implementierung der Methoden des Anzeigen-Listeners in der
Android API Demo App finden Sie im AdMob
AdListener-Beispiel.
|
onAdFailedToLoad() |
Die onAdFailedToLoad()
Methode 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 beim Laden von Anzeigen.
|
onAdImpression() |
Die onAdImpression()
Methode wird aufgerufen, wenn eine Impression für eine Anzeige erfasst wird.
|
onAdLoaded() |
Die onAdLoaded()
Methode wird ausgeführt, wenn das Laden einer Anzeige abgeschlossen ist. Hier können Sie beispielsweise das Hinzufügen von AdView
zu Ihrer Aktivität oder Ihrem Fragment verzögern, bis Sie sicher sind, dass eine Anzeige geladen wird.
|
onAdOpened() |
Die onAdOpened()
Methode wird aufgerufen, wenn eine Anzeige ein Overlay öffnet, das den Bildschirm abdeckt.
|
Hardwarebeschleunigung für Videoanzeigen
Damit Videoanzeigen in Ihren Banneranzeigenansichten angezeigt werden können, muss Hardware beschleunigung 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. Um die Hardwarebeschleunigung zu aktivieren oder zu deaktivieren, können Sie das android:hardwareAccelerated Attribut für die <application> und <activity> Elemente in Ihrer AndroidManifest.xml verwenden. 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.
Nächste Schritte
Minimierbare Banner
Minimierbare Banneranzeigen werden zuerst als größeres Overlay mit einer Schaltfläche angezeigt, mit der die Anzeige auf eine kleinere Größe minimiert werden kann. Sie können damit die Leistung weiter 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 für Apps empfohlen, bei denen Banneranzeigen in scrollbaren Inhalten platziert werden. Weitere Informationen finden Sie unter Adaptive Inline -Banner.