Mit Ihrem Feedback können Sie die Google Mobile Ads SDK-Roadmap mitgestalten. Nehmen Sie an der jährlichen Umfrage zum Google Mobile Ads SDK für 2023 teil, die bis zum 5. Mai 2023 endet.

Native Anzeigen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Native Anzeigen sind Anzeigen-Assets, die Nutzern über native UI-Komponenten präsentiert werden. Sie werden unter Verwendung der gleichen Ansichtstypen dargestellt, mit denen Sie bereits Ihre Layouts erstellen. Außerdem können sie so formatiert werden, dass sie mit dem visuellen Design der Umgebung übereinstimmen, in der sie leben. In Bezug auf die Programmierung bedeutet das, dass Ihre App beim Laden einer nativen Anzeige ein NativeAd-Objekt erhält, das seine Assets enthält. Die App und nicht das Google Mobile Ads SDK ist dann für die Auslieferung zuständig.

Ganz allgemein lässt sich sagen, dass die Implementierung von nativen Anzeigen aus zwei Teilen bestehen muss: eine Anzeige mit dem SDK laden und dann den Anzeigeninhalt in Ihrer App präsentieren.

Auf dieser Seite geht es um die Verwendung des SDK zum Laden nativer Anzeigen.

Voraussetzungen

Implementierung

Native Anzeigen werden mit der Klasse AdLoader geladen. Diese hat eine eigene Builder-Klasse, um sie bei der Erstellung anzupassen. Wenn Sie Listener zur Datei AdLoader hinzufügen, wenn eine App erstellt wird, gibt sie an, welche Arten von nativen Anzeigen sie empfangen kann. AdLoader fordert dann nur diese Typen an.

Adloader erstellen

Der folgende Code zeigt, wie Sie eine AdLoader erstellen, mit der native Anzeigen geladen werden können:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Auf das NativeAd-Format vorbereiten

Mit der ersten Methode oben wird AdLoader für das Format NativeAd vorbereitet:

forNativeAd()
Durch den Aufruf dieser Methode wird AdLoader so konfiguriert, dass native Anzeigen angefordert werden. Wenn eine Anzeige geladen wurde, wird die Methode onNativeAdLoaded() des Listener-Objekts aufgerufen.

Wenn AdLoader eine Anzeigenanfrage stellt, wählt Google die Anzeige aus, die den Ertrag des Publishers maximiert, und gibt sie zurück.

AdListener mit Adloader einrichten (optional)

Beim Erstellen von AdLoader wird mit der Funktion withAdListener ein AdListener festgelegt. Die Methode verwendet einen einzelnen AdListener-Parameter, der Callbacks von AdLoader empfängt, wenn Lebenszyklusereignisse der Anzeige stattfinden:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Anzeigen laden

Nachdem Sie die AdLoader erstellt haben, können Sie damit Anzeigen laden. Dafür gibt es zwei Methoden: loadAd() und loadAds().

loadAd()
Bei dieser Methode wird eine Anfrage für eine einzelne Anzeige gesendet.
:

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())
loadAds()
Diese Methode sendet eine Anfrage für bis zu fünf Anzeigen:

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Bei beiden Methoden wird ein AdRequest-Objekt als erster Parameter verwendet. Dies ist dieselbe AdRequest-Klasse, die auch von Bannern und Interstitials verwendet wird. Wie bei anderen Anzeigenformaten können Sie auch AdRequest-Targeting-Informationen hinzufügen.

loadAds() verwendet einen zusätzlichen Parameter: die Anzahl der Anzeigen, die das SDK für die Anfrage laden soll. Diese Anzahl ist auf fünf begrenzt und es kann nicht garantiert werden, dass das SDK die genaue Anzahl der angeforderten Anzeigen zurückgibt.

Die zurückgegebenen Google-Anzeigen unterscheiden sich voneinander. Anzeigen aus reserviertem Inventar oder von Käufern, einschließlich Käufern, die für die Abfolge oder die Gebotseinstellung konfiguriert sind, sind nicht garantiert eindeutig.

Callbacks

Nach einem Aufruf von loadAd() erfolgt ein einzelner Callback an die zuvor definierten Listener-Methoden, um das native Anzeigenobjekt auszuliefern oder einen Fehler zu melden.

Nach einem Aufruf von loadAds() erfolgen mehrere solcher Callbacks (mindestens einer, aber nicht mehr als die Anzahl der angeforderten Anzeigen). Bei Apps, die mehrere Anzeigen anfordern, muss in der Callback-Implementierung AdLoader.isLoading() aufgerufen werden, um festzustellen, ob der Ladevorgang abgeschlossen ist.

Das folgende Beispiel zeigt, wie isLoading() im Callback onNativeAdLoaded() geprüft wird:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

Ressourcen freigeben

Für geladene native Anzeigen muss die Methode destroy() verwendet werden. Dadurch werden ausgelastete Ressourcen frei und Speicherlecks werden vermieden.

Achten Sie darauf, dass alle NativeAd-Referenzen in der Methode onDestroy() Ihrer Aktivität gelöscht werden.

Lösche in deinem onNativeAdLoaded-Callback alle vorhandenen nativen Anzeigen, die dereferenziert werden.

Eine weitere wichtige Prüfung ist, ob die Aktivität zerstört wird. Wenn ja, rufen Sie destroy() für die zurückgegebene Anzeige auf und kehren sofort zurück:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen statt Live-Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Am einfachsten laden Sie die Testanzeigen mit der Test-Anzeigenblock-ID für erweiterte native Anzeigen auf Android:

ca-app-pub-3940256099942544/2247696110

Es wurde speziell so konfiguriert, dass es bei jeder Anfrage Testanzeigen zurückgibt. Sie können es beim Programmieren, Testen und Debuggen in eigenen Apps verwenden. Ersetzen Sie diese vor dem Veröffentlichen Ihrer App einfach durch Ihre eigene Anzeigenblock-ID.

Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.

Wann sollten Anzeigen angefordert werden?

Anwendungen, die native Anzeigen ausliefern, können diese vorab anfordern. In vielen Fällen ist dies die empfohlene Vorgehensweise. In einer App, in der beispielsweise eine Liste mit Elementen gemischt ist, in denen native Anzeigen enthalten sind, können native Anzeigen für die gesamte Liste geladen werden. Dabei werden einige Anzeigen unter Umständen erst ausgeliefert, wenn der Nutzer scrollt.

Hardwarebeschleunigung für Videoanzeigen

Damit Videoanzeigen in Ihren nativen Anzeigenaufrufen ausgeliefert werden, muss die Hardwarebeschleunigung aktiviert sein.

Die Hardwarebeschleunigung ist standardmäßig aktiviert, kann jedoch bei einigen Apps deaktiviert werden. Wenn dies auf Ihre App zutrifft, empfehlen wir, die Hardwarebeschleunigung für Aktivitätsklassen zu aktivieren, die Anzeigen verwenden.

Hardwarebeschleunigung aktivieren

Wenn Ihre App global nicht richtig funktioniert, können Sie sie auch für einzelne Aktivitäten steuern. Zum Aktivieren oder Deaktivieren der Hardwarebeschleunigung können Sie das Attribut android:hardwareAccelerated für die Elemente <application> und <activity> in Ihrem AndroidManifest.xml verwenden. Im folgenden Beispiel wird die Hardwarebeschleunigung für die gesamte Anwendung aktiviert, jedoch 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 für die Steuerung der Hardwarebeschleunigung finden Sie im Leitfaden zur Hardwarebeschleunigung. Wenn die Aktivität deaktiviert ist, können einzelne Anzeigenaufrufe nicht für die Hardwarebeschleunigung aktiviert werden, sodass für die Aktivität selbst die Hardwarebeschleunigung aktiviert sein muss.

Native Anzeige einblenden

Nachdem Sie eine Anzeige geladen haben, müssen Sie sie nur noch für Ihre Nutzer bereitstellen. Weitere Informationen finden Sie in unserem Leitfaden für erweiterte native Anzeigen.

,

Native Anzeigen sind Anzeigen-Assets, die Nutzern über native UI-Komponenten präsentiert werden. Sie werden unter Verwendung der gleichen Ansichtstypen dargestellt, mit denen Sie bereits Ihre Layouts erstellen. Außerdem können sie so formatiert werden, dass sie mit dem visuellen Design der Umgebung übereinstimmen, in der sie leben. In Bezug auf die Programmierung bedeutet das, dass Ihre App beim Laden einer nativen Anzeige ein NativeAd-Objekt erhält, das seine Assets enthält. Die App und nicht das Google Mobile Ads SDK ist dann für die Auslieferung zuständig.

Ganz allgemein lässt sich sagen, dass die Implementierung von nativen Anzeigen aus zwei Teilen bestehen muss: eine Anzeige mit dem SDK laden und dann den Anzeigeninhalt in Ihrer App präsentieren.

Auf dieser Seite geht es um die Verwendung des SDK zum Laden nativer Anzeigen.

Voraussetzungen

Implementierung

Native Anzeigen werden mit der Klasse AdLoader geladen. Diese hat eine eigene Builder-Klasse, um sie bei der Erstellung anzupassen. Wenn Sie Listener zur Datei AdLoader hinzufügen, wenn eine App erstellt wird, gibt sie an, welche Arten von nativen Anzeigen sie empfangen kann. AdLoader fordert dann nur diese Typen an.

Adloader erstellen

Der folgende Code zeigt, wie Sie eine AdLoader erstellen, mit der native Anzeigen geladen werden können:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Auf das NativeAd-Format vorbereiten

Mit der ersten Methode oben wird AdLoader für das Format NativeAd vorbereitet:

forNativeAd()
Durch den Aufruf dieser Methode wird AdLoader so konfiguriert, dass native Anzeigen angefordert werden. Wenn eine Anzeige geladen wurde, wird die Methode onNativeAdLoaded() des Listener-Objekts aufgerufen.

Wenn AdLoader eine Anzeigenanfrage stellt, wählt Google die Anzeige aus, die den Ertrag des Publishers maximiert, und gibt sie zurück.

AdListener mit Adloader einrichten (optional)

Beim Erstellen von AdLoader wird mit der Funktion withAdListener ein AdListener festgelegt. Die Methode verwendet einen einzelnen AdListener-Parameter, der Callbacks von AdLoader empfängt, wenn Lebenszyklusereignisse der Anzeige stattfinden:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Anzeigen laden

Nachdem Sie die AdLoader erstellt haben, können Sie damit Anzeigen laden. Dafür gibt es zwei Methoden: loadAd() und loadAds().

loadAd()
Bei dieser Methode wird eine Anfrage für eine einzelne Anzeige gesendet.
:

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())
loadAds()
Diese Methode sendet eine Anfrage für bis zu fünf Anzeigen:

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Bei beiden Methoden wird ein AdRequest-Objekt als erster Parameter verwendet. Dies ist dieselbe AdRequest-Klasse, die auch von Bannern und Interstitials verwendet wird. Wie bei anderen Anzeigenformaten können Sie auch AdRequest-Targeting-Informationen hinzufügen.

loadAds() verwendet einen zusätzlichen Parameter: die Anzahl der Anzeigen, die das SDK für die Anfrage laden soll. Diese Anzahl ist auf fünf begrenzt und es kann nicht garantiert werden, dass das SDK die genaue Anzahl der angeforderten Anzeigen zurückgibt.

Die zurückgegebenen Google-Anzeigen unterscheiden sich voneinander. Anzeigen aus reserviertem Inventar oder von Käufern, einschließlich Käufern, die für die Abfolge oder die Gebotseinstellung konfiguriert sind, sind nicht garantiert eindeutig.

Callbacks

Nach einem Aufruf von loadAd() erfolgt ein einzelner Callback an die zuvor definierten Listener-Methoden, um das native Anzeigenobjekt auszuliefern oder einen Fehler zu melden.

Nach einem Aufruf von loadAds() erfolgen mehrere solcher Callbacks (mindestens einer, aber nicht mehr als die Anzahl der angeforderten Anzeigen). Bei Apps, die mehrere Anzeigen anfordern, muss in der Callback-Implementierung AdLoader.isLoading() aufgerufen werden, um festzustellen, ob der Ladevorgang abgeschlossen ist.

Das folgende Beispiel zeigt, wie isLoading() im Callback onNativeAdLoaded() geprüft wird:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

Ressourcen freigeben

Für geladene native Anzeigen muss die Methode destroy() verwendet werden. Dadurch werden ausgelastete Ressourcen frei und Speicherlecks werden vermieden.

Achten Sie darauf, dass alle NativeAd-Referenzen in der Methode onDestroy() Ihrer Aktivität gelöscht werden.

Lösche in deinem onNativeAdLoaded-Callback alle vorhandenen nativen Anzeigen, die dereferenziert werden.

Eine weitere wichtige Prüfung ist, ob die Aktivität zerstört wird. Wenn ja, rufen Sie destroy() für die zurückgegebene Anzeige auf und kehren sofort zurück:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen statt Live-Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Am einfachsten laden Sie die Testanzeigen mit der Test-Anzeigenblock-ID für erweiterte native Anzeigen auf Android:

ca-app-pub-3940256099942544/2247696110

Es wurde speziell so konfiguriert, dass es bei jeder Anfrage Testanzeigen zurückgibt. Sie können es beim Programmieren, Testen und Debuggen in eigenen Apps verwenden. Ersetzen Sie diese vor dem Veröffentlichen Ihrer App einfach durch Ihre eigene Anzeigenblock-ID.

Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.

Wann sollten Anzeigen angefordert werden?

Anwendungen, die native Anzeigen ausliefern, können diese vorab anfordern. In vielen Fällen ist dies die empfohlene Vorgehensweise. In einer App, in der beispielsweise eine Liste mit Elementen gemischt ist, in denen native Anzeigen enthalten sind, können native Anzeigen für die gesamte Liste geladen werden. Dabei werden einige Anzeigen unter Umständen erst ausgeliefert, wenn der Nutzer scrollt.

Hardwarebeschleunigung für Videoanzeigen

Damit Videoanzeigen in Ihren nativen Anzeigenaufrufen ausgeliefert werden, muss die Hardwarebeschleunigung aktiviert sein.

Die Hardwarebeschleunigung ist standardmäßig aktiviert, kann jedoch bei einigen Apps deaktiviert werden. Wenn dies auf Ihre App zutrifft, empfehlen wir, die Hardwarebeschleunigung für Aktivitätsklassen zu aktivieren, die Anzeigen verwenden.

Hardwarebeschleunigung aktivieren

Wenn Ihre App global nicht richtig funktioniert, können Sie sie auch für einzelne Aktivitäten steuern. Zum Aktivieren oder Deaktivieren der Hardwarebeschleunigung können Sie das Attribut android:hardwareAccelerated für die Elemente <application> und <activity> in Ihrem AndroidManifest.xml verwenden. Im folgenden Beispiel wird die Hardwarebeschleunigung für die gesamte Anwendung aktiviert, jedoch 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 für die Steuerung der Hardwarebeschleunigung finden Sie im Leitfaden zur Hardwarebeschleunigung. Wenn die Aktivität deaktiviert ist, können einzelne Anzeigenaufrufe nicht für die Hardwarebeschleunigung aktiviert werden, sodass für die Aktivität selbst die Hardwarebeschleunigung aktiviert sein muss.

Native Anzeige einblenden

Nachdem Sie eine Anzeige geladen haben, müssen Sie sie nur noch für Ihre Nutzer bereitstellen. Weitere Informationen finden Sie in unserem Leitfaden für erweiterte native Anzeigen.