Native Banner Ads zu einer Android-App hinzufügen

Mit der Native Banner Ad API kannst du ein personalisiertes Erlebnis für das Anzeigen deiner nativen Ad ohne die Werbeanzeigen-Assets des Werbetreibenden erstellen, wie zum Beispiel Bild-, Video- oder Carousel-Inhalte. Ähnlich wie bei nativen Anzeigen erhältst du eine Gruppe an Werbeanzeigeneigenschaften, wie einen Titel, ein Symbol und einen Call to Action, und kannst dir daraus eine Werbeanzeige individuell zusammenstellen. Anders als Werbebanner bietet die Native Banner Ad API ein natives Layout-Erlebnis, sodass du das Layout von Komponenten innerhalb der Anzeige vollständig anpassen kannst.

Stelle sicher, dass du die Leitfäden zu den ersten Schritten mit dem Audience Network und mit Android abgeschlossen hast, bevor du fortfährst.

In diesem Leitfaden implementieren wir die folgende Platzierung einer nativen Banner Ad. Du erstellst eine native Banner Ad, die die folgenden Komponenten enthält:

Ansicht 1: AdOptionsView

Ansicht 2: Hinweis „Anzeige“

Ansicht 3: Symbol der Werbeanzeige

Ansicht 4: Titel der Werbeanzeige

Ansicht 5: Sozialer Kontext

Ansicht 6: Call to Action-Button




Schritte zur Erstellung von nativen Banner Ads

Schritt 1: Eine Native Banner Ad anfordern

Schritt 2: Dein Native Banner Ad-Layout erstellen

Schritt 3: Die Metadaten der Werbeanzeige in dein Layout einfügen

Initialisiere das Audience Network-SDK

Diese Methode wurde in Android Audience Network SDK Version 5.1 hinzugefügt

Seit Version 5.3.0 ist die Initialisierung des Audience Network-SDK für Android obligatorisch In diesem Dokument finden Sie Informationen zur Initialisierung des Audience Network-SDK für Android.

Vor der Erstellung eines Werbeanzeigenobjekts und dem Laden von Werbeanzeigen müssen Sie Audience Network-SDK initialisieren. Dies wird beim App-Launch empfohlen.

public class YourApplication extends Application {
    ...
    @Override
    public void onCreate() {
        super.onCreate();
        // Initialize the Audience Network SDK
        AudienceNetworkAds.initialize(this);       
    }
    ...
}

Schritt 1: Eine Native Banner Ad anfordern

Füge folgenden Code am Anfang deiner Aktivität ein, um das Facebook-Werbeanzeigen-SDK zu importieren:

import com.facebook.ads.*;

Instanziiere dann ein NativeBannerAd-Objekt, erstelle ein AdListener und rufe loadAd(...) in deiner Aktivität auf:

public class NativeBannerAdActivity extends Activity {

    private final String TAG = NativeBannerAdActivity.class.getSimpleName();
    private NativeBannerAd nativeBannerAd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Instantiate a NativeBannerAd object. 
        // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
        // now, while you are testing and replace it later when you have signed up.
        // While you are using this temporary code you will only get test ads and if you release
        // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
        nativeBannerAd = new NativeBannerAd(this, "YOUR_PLACEMENT_ID");
        NativeAdListener nativeAdListener = new NativeAdListener() {

            @Override
            public void onMediaDownloaded(Ad ad) {
                // Native ad finished downloading all assets
                Log.e(TAG, "Native ad finished downloading all assets.");
            }

            @Override
            public void onError(Ad ad, AdError adError) {
                // Native ad failed to load
                Log.e(TAG, "Native ad failed to load: " + adError.getErrorMessage());
            }

            @Override
            public void onAdLoaded(Ad ad) {
                // Native ad is loaded and ready to be displayed
                Log.d(TAG, "Native ad is loaded and ready to be displayed!");
            }

            @Override
            public void onAdClicked(Ad ad) {
                // Native ad clicked
                Log.d(TAG, "Native ad clicked!");
            }

            @Override
            public void onLoggingImpression(Ad ad) {
                // Native ad impression
                Log.d(TAG, "Native ad impression logged!");
            }
        });
        // load the ad
        nativeBannerAd.loadAd(
                nativeBannerAd.buildLoadAdConfig()
                        .withAdListener(nativeAdListener)
                        .build());
    }
}

Später kommen wir hierher zurück, um Code zur onAdLoaded()-Methode hinzuzufügen.

Schritt 2: Dein Native Banner Ad-Layout erstellen

Als Nächstes musst du die Metadaten der Werbeanzeige extrahieren und aus ihren Eigenschaften eine individuelle native Benutzeroberfläche erstellen. Du kannst deine individuelle Ansicht in einer Layout-XML-Datei erstellen oder Elemente als Code hinzufügen.

Nutze unsere Richtlinien für native Werbeanzeigen beim Erstellen nativer Werbeanzeigenbanner in deiner App.

Füge im Layout deiner Aktivität activity_main.xml einen Container für deine Native Banner Ad hinzu. Der Container muss ein com.facebook.ads.NativeAdLayout sein, wobei es sich um einen Wrapper für ein FrameLayout mit einigen Zusatzfunktionen handelt, mit dem wir einen nativen Anzeigenberichterstattungsfluss über der Ad darstellen können. Später bei Anwendung der onAdLoaded()-Methode fügst du die Ansicht deiner nativen anzeige in diesen Container ein.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    ...
    <com.facebook.ads.NativeAdLayout
        android:id="@+id/native_banner_ad_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" />
    ...
</RelativeLayout>

Erstelle ein individuelles Layout native_banner_ad_unit.xml für deine Native Banner Ad:



Unten findest du ein Beispiel für ein individuelles Layout für deine native Banner Ad:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RelativeLayout
            android:id="@+id/ad_choices_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="2dp" />

        <TextView
            android:id="@+id/native_ad_sponsored_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:ellipsize="end"
            android:lines="1"
            android:padding="2dp"
            android:textColor="@android:color/darker_gray"
            android:textSize="12sp" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white">

        <com.facebook.ads.MediaView
            android:id="@+id/native_icon_view"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:gravity="center" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:orientation="vertical"
            android:paddingLeft="53dp"
            android:paddingRight="83dp">

            <TextView
                android:id="@+id/native_ad_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:lines="1"
                android:textColor="@android:color/black"
                android:textSize="15sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/native_ad_social_context"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:lines="1"
                android:textSize="12sp" />
        </LinearLayout>

        <Button
            android:id="@+id/native_ad_call_to_action"
            android:layout_width="80dp"
            android:layout_height="50dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:background="#4286F4"
            android:gravity="center"
            android:paddingLeft="3dp"
            android:paddingRight="3dp"
            android:textColor="@android:color/white"
            android:textSize="12sp"
            android:visibility="gone" />

    </RelativeLayout>
</LinearLayout>

Schritt 3: Die Metadaten der Werbeanzeige in dein Layout einfügen

Szenario 1: Die Werbeanzeige nach dem erfolgreichen Laden sofort anzeigen. Passe die oben angegebene onAdLoaded()-Methode an, um die Eigenschaften der Native Banner Ad's abzurufen und sie anzuzeigen:

public class NativeBannerAdActivity extends Activity {

    private NativeAdLayout nativeAdLayout;
    private LinearLayout adView;
    private NativeBannerAd nativeBannerAd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Instantiate a NativeBannerAd object. 
        // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
        // now, while you are testing and replace it later when you have signed up.
        // While you are using this temporary code you will only get test ads and if you release
        // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
        nativeBannerAd = new NativeBannerAd(this, "YOUR_PLACEMENT_ID");
        NativeAdListener nativeAdListener = new NativeAdListener() {
            ...
            @Override
            public void onAdLoaded(Ad ad) {
                // Race condition, load() called again before last ad was displayed
                if (nativeBannerAd == null || nativeBannerAd != ad) {
                    return;
                 }
                // Inflate Native Banner Ad into Container
                inflateAd(nativeBannerAd);
            }
            ...
        });
        // load the ad
        nativeBannerAd.loadAd(
                nativeBannerAd.buildLoadAdConfig()
                        .withAdListener(nativeAdListener)
                        .build());
    }

    private void inflateAd(NativeBannerAd nativeBannerAd) {
        // Unregister last ad
        nativeBannerAd.unregisterView();

        // Add the Ad view into the ad container.
        nativeAdLayout = findViewById(R.id.native_banner_ad_container);
        LayoutInflater inflater = LayoutInflater.from(NativeBannerAdActivity.this);
        // Inflate the Ad view.  The layout referenced is the one you created in the last step.
        adView = (LinearLayout) inflater.inflate(R.layout.native_banner_ad_layout, nativeAdLayout, false);
        nativeAdLayout.addView(adView);

        // Add the AdChoices icon
        RelativeLayout adChoicesContainer = adView.findViewById(R.id.ad_choices_container);
        AdOptionsView adOptionsView = new AdOptionsView(NativeBannerAdActivity.this, nativeBannerAd, nativeAdLayout);
        adChoicesContainer.removeAllViews();
        adChoicesContainer.addView(adOptionsView, 0);

        // Create native UI using the ad metadata.
        TextView nativeAdTitle = adView.findViewById(R.id.native_ad_title);
        TextView nativeAdSocialContext = adView.findViewById(R.id.native_ad_social_context);
        TextView sponsoredLabel = adView.findViewById(R.id.native_ad_sponsored_label);
        MediaView nativeAdIconView = adView.findViewById(R.id.native_icon_view);
        Button nativeAdCallToAction = adView.findViewById(R.id.native_ad_call_to_action);

        // Set the Text.
        nativeAdCallToAction.setText(nativeBannerAd.getAdCallToAction());
        nativeAdCallToAction.setVisibility(
                nativeBannerAd.hasCallToAction() ? View.VISIBLE : View.INVISIBLE);
        nativeAdTitle.setText(nativeBannerAd.getAdvertiserName());
        nativeAdSocialContext.setText(nativeBannerAd.getAdSocialContext());
        sponsoredLabel.setText(nativeBannerAd.getSponsoredTranslation());

        // Register the Title and CTA button to listen for clicks.
        List<View> clickableViews = new ArrayList<>();
        clickableViews.add(nativeAdTitle);
        clickableViews.add(nativeAdCallToAction);
        nativeBannerAd.registerViewForInteraction(adView, nativeAdIconView, clickableViews);
    }
}

Das SDK protokolliert die Impression und verarbeitet den Klick automatisch. Beachte, dass du die Ansicht der Werbeanzeige bei der NativeBannerAd-Instanz registrieren musst, um dies zu ermöglichen. Damit alle Eelemente der Ansicht klickbar sind, registriere sie wie folgt:

registerViewForInteraction(View view, MediaView adIconView)

Szenario 2: Die Werbeanzeige soll einige Sekunden oder Minuten, nachdem sie erfolgreich geladen wurde, angezeigt werden. Du solltest prüfen, ob die Werbeanzeige ungültig gemacht wurde, bevor du sie anzeigst.

Falls die Werbeanzeige nicht sofort angezeigt wird, nachdem sie geladen wurde, muss der Entwickler prüfen, ob die Werbeanzeige ungültig gemacht wurde. Nach dem erfolgreichen Laden der Werbeanzeige ist diese 60 Minuten lang gültig. Du wirst nichtbezahlt, wenn du eine ungültige Werbeanzeige anzeigst. Du solltest isAdInvalidated() aufrufen, um die Anzeige zu validieren.

Orientiere dich an nachstehendem Beispiel, aber kopiere bitte den Code nicht in dein Projekt, da es sich wie gesagt nur um ein Beispiel handelt:

public class NativeBannerAdActivity extends Activity {

    private NativeBannerAd nativeBannerAd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Instantiate a NativeBannerAd object. 
        // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
        // now, while you are testing and replace it later when you have signed up.
        // While you are using this temporary code you will only get test ads and if you release
        // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
        nativeBannerAd = new NativeBannerAd(this, "YOUR_PLACEMENT_ID");
         NativeAdListener nativeAdListener = new NativeAdListener() {
            ...
        });
        // load the ad
        nativeBannerAd.loadAd(
                nativeBannerAd.buildLoadAdConfig()
                        .withAdListener(nativeAdListener)
                        .build());
    }

    private void showAdWithDelay() {
       /**
        * Here is an example for displaying the ad with delay;
        * Please do not copy the Handler into your project
       */
       // Handler handler = new Handler();
       handler.postDelayed(new Runnable() {
           public void run() {
             // Check if nativeBannerAd has been loaded successfully
               if(nativeBannerAd == null || !nativeBannerAd.isAdLoaded()) {
                   return;
               }
             // Check if ad is already expired or invalidated, and do not show ad if that is the case. You will not get paid to show an invalidated ad.
               if(nativeBannerAd.isAdInvalidated()) {
                   return;
               }
               inflateAd(nativeBannerAd); // Inflate Native Banner Ad into Container same as in previous code example
           }
       }, 1000 * 60 * 15); // Show the ad after 15 minutes
    }
}

Festlegen des klickbaren Bereichs

Um die Nutzererfahrung und deine Ergebnisse zu verbessern, solltest du den klickbaren Bereich festlegen, um versehentliche Klicks zu vermeiden. Auf der Seite zu den Richtlinien für das Audience Network-SDK erhältst du mehr Informationen darüber, wie du dafür sorgst, dass leere Bereiche nicht anklickbar sind.

Um den klickbaren Bereich genau festzulegen, kannst du mit registerViewForInteraction(View view, MediaView adIconView, List<View> clickableViews) eine Liste der klickbaren Ansichten registrieren. Wenn z. B. im vorherigen Beispiel nur der Anzeigentitel und der Call to Action-Button klickbar sein sollen, kann der Code etwa wie folgt aussehen:

@Override
public void onAdLoaded(Ad ad) {
  ...
  List<View> clickableViews = new ArrayList<>();
  clickableViews.add(nativeAdTitle);
  clickableViews.add(nativeAdCallToAction);
  nativeBannerAd.registerViewForInteraction(mAdView, nativeAdIconView, clickableViews);
  ...
}

Wenn du die Ansicht wiederverwendest, um über einen bestimmten Zeitraum verschiedene Werbeanzeigen anzuzeigen, vergiss nicht, unregisterView() aufzurufen, bevor du dieselbe Ansicht bei einer anderen Instanz von NativeBannerAd registrierst.

Führe den Code aus. Du solltest eine native Banner Ad sehen:

Wenn eine Werbeanzeige geladen wird, enthalten die folgenden Eigenschaften einige Werte: title, icon und callToAction. Andere Eigenschaften können null oder leer sein. Vergewissere dich, dass dein Code diese Fälle verarbeiten kann.


Wenn es keine Werbeanzeige zum Anzeigen gibt, wird onError mit einem error.code aufgerufen. Wenn du deine eigene Berichts- oder Mediationsebene verwendest, solltest du den Codewert prüfen und diesen Fall erkennen. Du kannst in diesem Fall auf ein anderes Anzeigennetzwerk zurückgreifen, aber fordere danach nicht sofort eine neue Werbeanzeige an.


Erhaltene Werbeanzeigen-Metadaten können bis zu 30 Minuten lang zwischengespeichert und immer wieder verwendet werden. Wenn du die Metadaten nach dieser Zeitspanne weiter verwenden möchtest, lade eine neue Werbeanzeige.

Nächste Schritte

  • Informationen zum Hinzufügen von Native Ads zu deiner App findest du im Leitfaden zur Native Ad-Vorlage.

  • Sieh dir unsere Codebeispiele für die Verwendung von Native Ads an. Die NativeBannerAdSample steht als Teil des SDK zur Verfügung und befindet sich im Ordner AudienceNetwork/samples. Importiere das Projekt in deine IDE und führe es auf einem Gerät oder im Emulator aus.

Weitere Ressourcen

Leitfaden für erste Schritte

Technischer Leitfaden für die ersten Schritte mit Audience Network

Codebeispiele

Beispiele für die Integration von Audience Network-Werbeanzeigen

FAQ

FAQ zu Audience Network

Vorlage für Native Ads

Zur Vereinfachung der Integration von Native Ads