Native Anzeigen

Native Anzeigen sind Anzeigen-Assets, die Nutzern über UI-Komponenten präsentiert werden, die für die Plattform nativ sind. Native Anzeigen 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 Ihrer App übereinstimmen.

Wenn eine native Anzeige geladen wird, erhält Ihre App ein Anzeigenobjekt mit den zugehörigen Assets. Die Anzeige wird dann von der App und nicht vom Google Mobile Ads SDK ausgeliefert.

Die Implementierung nativer Anzeigen umfasst im Wesentlichen zwei Schritte: das Laden einer Anzeige über das SDK und das anschließende Präsentieren des Anzeigeninhalts in Ihrer App.

Auf dieser Seite erfahren Sie, wie Sie mit dem SDK native Anzeigen laden. Tipp: Weitere Informationen zu nativen Anzeigen finden Sie in unserem Leitfaden für native Anzeigen.

Sehen Sie sich auch einige Erfolgsgeschichten von Kunden an: Fallstudie 1, Fallstudie 2.

Vorbereitung

Verwenden Sie immer Testanzeigen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von aktiven Produktionsanzeigen.

Am einfachsten lassen sich Testanzeigen laden, wenn Sie die spezielle Anzeigenblock-ID für native Anzeigen auf Android-Geräten verwenden:

ca-app-pub-3940256099942544/2247696110

Es wurde speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können es in Ihren eigenen Apps verwenden, während Sie Code schreiben, testen und Fehler beheben. 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.

Anzeigen laden

Native Anzeigen werden mit der Klasse AdLoader geladen, die eine eigene Klasse Builder hat, mit der sie beim Erstellen angepasst werden kann. Wenn Sie der AdLoader beim Erstellen Listener hinzufügen, gibt die App an, welche Arten von nativen Anzeigen sie empfangen kann. Die AdLoader fordert dann nur diese Typen an.

AdLoader erstellen

Der folgende Code zeigt, wie ein AdLoader erstellt wird, das native Anzeigen laden kann:

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.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Die Methode forNativeAd() ist für die Vorbereitung der AdLoader für das NativeAd-Format verantwortlich. Wenn eine Anzeige erfolgreich geladen wurde, wird die Methode onNativeAdLoaded() des Listener-Objekts aufgerufen.

AdListener mit dem AdLoader einrichten (optional)

Beim Erstellen des AdLoader legt die Funktion withAdListener einen AdListener für den Lader fest. Die Methode nimmt als einzigen Parameter eine AdListener an, die bei Lifecycle-Ereignissen von Anzeigen Rückrufe von der AdLoader erhält:

Java

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

Kotlin

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

Anzeigenanfrage senden

Nachdem Sie eine AdLoader erstellt haben, können Sie damit Anzeigen anfordern. Dazu gibt es zwei Methoden: loadAd() und loadAds().

loadAd()

Mit 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()

Bei dieser Methode wird eine Anfrage für mehrere Anzeigen (bis zu fünf) gesendet:

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. Es handelt sich dabei um dieselbe AdRequest-Klasse, die auch für Banner und Interstitials verwendet wird. Mithilfe von Methoden der AdRequest-Klasse können Sie wie bei anderen Anzeigenformaten Targeting-Informationen hinzufügen.

Mehrere Anzeigen laden (optional)

Die Methode loadAds() nimmt einen zusätzlichen Parameter an: die Anzahl der Anzeigen, die das SDK für die Anfrage laden soll. Diese Zahl ist auf fünf begrenzt. Es kann nicht garantiert werden, dass das SDK genau die angeforderte Anzahl von Anzeigen zurückgibt.

Zurückgegebene Google-Anzeigen unterscheiden sich alle voneinander. Anzeigen aus reserviertem Inventar oder von Drittanbietern sind jedoch nicht garantiert einzigartig.

Verwenden Sie die Methode loadAds() nicht, wenn Sie Mediation verwenden, da Anfragen für mehrere native Anzeigen derzeit nicht für Anzeigenblock-IDs funktionieren, die für Mediation konfiguriert wurden.

Callbacks

Nach einem Aufruf von loadAd() wird ein einzelner Rückruf an die zuvor definierten Listener-Methoden gesendet, um das native Anzeigenobjekt zu übermitteln oder einen Fehler zu melden.

Nach einem Aufruf von loadAds() werden mehrere solcher Rückrufe ausgeführt (mindestens einer und höchstens die Anzahl der angeforderten Anzeigen). Apps, die mehrere Anzeigen anfordern, sollten in ihren Callback-Implementierungen AdLoader.isLoading() aufrufen, um festzustellen, ob der Ladevorgang abgeschlossen ist.

Hier ein Beispiel dafür, wie du isLoading() im onNativeAdLoaded()-Callback prüfen kannst:

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

Verwenden Sie die destroy()-Methode für geladene native Anzeigen. Dadurch werden genutzte Ressourcen freigegeben und Speicherlecks verhindert.

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

In Ihrem onNativeAdLoaded-Callback müssen alle vorhandenen nativen Anzeigen zerstört werden, die dereferenziert werden.

Eine weitere wichtige Prüfung ist, ob die Aktivität zerstört wurde. Wenn ja, rufe destroy() für die zurückgegebene Anzeige auf und kehre 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()

Best Practices

Beachten Sie beim Laden von Anzeigen die folgenden Regeln.

  • In Apps, in denen native Anzeigen in einer Liste verwendet werden, sollte die Liste der Anzeigen vorab im Cache gespeichert werden.

  • Wenn Sie Anzeigen vorab im Cache speichern, leeren Sie den Cache und laden Sie die Seite nach einer Stunde neu.

  • Rufe loadAd() oder loadAds() auf einem AdLoader erst auf, wenn die erste Anfrage vollständig geladen wurde.

  • Beschränken Sie das Caching nativer Anzeigen auf das Notwendige. Beim Pre-Caching sollten beispielsweise nur die Anzeigen im Cache gespeichert werden, die sofort auf dem Bildschirm zu sehen sind. Native Anzeigen belegen viel Arbeitsspeicher. Wenn sie im Cache gespeichert werden, ohne gelöscht zu werden, führt das zu einer übermäßigen Arbeitsspeichernutzung.

  • Native Anzeigen löschen, wenn sie nicht mehr verwendet werden.

Hardwarebeschleunigung für Videoanzeigen

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

Die Hardwarebeschleunigung ist standardmäßig aktiviert, kann aber von einigen Apps deaktiviert werden. Wenn das auf Ihre App zutrifft, empfehlen wir, die Hardwarebeschleunigung für Aktivitätsklassen 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. Wenn Sie die Hardwarebeschleunigung aktivieren oder deaktivieren möchten, verwenden Sie das Attribut android:hardwareAccelerated für die Elemente <application> und <activity> in Ihrer AndroidManifest.xml. 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: Einzelne Anzeigenaufrufe können nicht für die Hardwarebeschleunigung aktiviert werden, wenn die Aktivität deaktiviert ist. Die Hardwarebeschleunigung muss also für die Aktivität selbst aktiviert sein.

Anzeige schalten

Nachdem Sie eine Anzeige geladen haben, müssen Sie sie nur noch Ihren Nutzern präsentieren. Weitere Informationen finden Sie in unserem erweiterten Leitfaden zu nativen Anzeigen.