Interstitial Ads zu deiner Android-App hinzufügen

Mit dem Audience Network kannst du deine Android-Apps mit Facebook-Werbeanzeigen zu Geld machen. Eine Interstitial Ad ist eine Werbeanzeige im Vollbildmodus, die du in deiner App anzeigen kannst. Interstitial Ads werden meistens während eines Übergangs in deiner App gezeigt. Sie können z. B. nach dem Abschluss eines Levels in einem Spiel oder nach dem Laden eines Artikels in einer Nachrichten-App gezeigt werden.

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

Schrittweise Anleitung

Schritt 1: Initialisierung von Interstitial Ads in deiner Aktivität

Schritt 2: Anzeige von Interstitial Ads in deiner Aktivität

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: Initialisierung von Interstitial Ads in deiner Aktivität

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

import com.facebook.ads.*;

Initialisiere die InterstitialAd.

private InterstitialAd interstitialAd;

@Override
public void onCreate(Bundle savedInstanceState) {
...
  // Instantiate an InterstitialAd 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).
  interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
...  

Schritt 2: Anzeige von Interstitial Ads

Szenario 1: Erstelle einen InterstitialAdListener, lade die Werbeanzeige und zeige sie sofort an, nachdem sie erfolgreich geladen wurde.

public class InterstitialAdActivity extends Activity {

    private final String TAG = InterstitialAdActivity.class.getSimpleName();
    private InterstitialAd interstitialAd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Instantiate an InterstitialAd 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).
        interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
        // Create listeners for the Interstitial Ad
        InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
            @Override
            public void onInterstitialDisplayed(Ad ad) {
                // Interstitial ad displayed callback
                Log.e(TAG, "Interstitial ad displayed.");
            }

            @Override
            public void onInterstitialDismissed(Ad ad) {
                // Interstitial dismissed callback
                Log.e(TAG, "Interstitial ad dismissed.");
            }

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

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

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

            @Override
            public void onLoggingImpression(Ad ad) {
                // Ad impression logged callback
                Log.d(TAG, "Interstitial ad impression logged!");
            }
        };

        // For auto play video ads, it's recommended to load the ad
        // at least 30 seconds before it is shown
        interstitialAd.loadAd(
                interstitialAd.buildLoadAdConfig()
                        .withAdListener(interstitialAdListener)
                        .build());
    }
}

Der Inhalt von Interstitial Ads nimmt viel Platz in Anspruch. Es ist also empfehlenswert, vorzeitig loadAd(...) aufzurufen und dann zum entsprechenden Zeitpunkt show() aufzurufen.

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*die Entwickler*in prüfen, ob die Werbeanzeige ungültig gemacht wurde. Nach dem erfolgreichen Laden der Werbeanzeige ist diese 60 Minuten lang gültig. Du wirst nicht bezahlt, wenn du eine ungültige Werbeanzeige anzeigst.

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 InterstitialAdActivity extends Activity {

    private InterstitialAd  interstitialAd ;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Instantiate an InterstitialAd 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).
        interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
        InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
            ...
        };
        // load the ad
        interstitialAd.loadAd(
                interstitialAd.buildLoadAdConfig()
                        .withAdListener(interstitialAdListener)
                        .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 interstitialAd has been loaded successfully
               if(interstitialAd == null || !interstitialAd.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(interstitialAd.isAdInvalidated()) {
                   return;
               }
               // Show the ad
                interstitialAd.show(); 
           }
       }, 1000 * 60 * 15); // Show the ad after 15 minutes
    }
}

Füge zuletzt der onDestroy()-Funktion deiner Aktivität folgenden Code hinzu, um die Ressourcen, die die InterstitialAd verwendet, freizugeben:

@Override
protected void onDestroy() {
    if (interstitialAd != null) {
        interstitialAd.destroy();
    }
    super.onDestroy();
}

Wenn du den standardmäßigen Google Android-Emulator verwendest, füge die folgende Codezeile vor dem Laden einer Testwerbeanzeige hinzu:
AdSettings.addTestDevice("HASHED ID");.

Wenn du zum ersten Mal eine Werbeanzeige für ein Gerät anfragst, verwende die gehashte ID, die im Logcat aufgeführt wird.

Dieser Schritt wird in Genymotion und physischen Geräten nicht benötigt. Wenn du mit echten Werbeanzeigen testen möchtest, lies unseren Testleitfaden.

Starte deine App. Eine Interstitial Ad sollte angezeigt werden:

Hardware-Beschleunigung bei Video Ads

Für Videos Ads im Audience Network muss das Rendering mit Hardware-Beschleunigung aktiviert werden. Andernfalls kann es bei Videoaufrufen zu einem schwarzen Bildschirm kommen. Dies gilt für

  • Videowerbung in Native Ads
  • Videowerbung in Interstitials
  • In-Stream-Video Ads
  • Videos mit Belohnung

Die Hardware-Beschleunigung wird standardmäßig aktiviert, wenn deine Ziel-API-Ebene größer oder gleich 14 ist (Ice Cream Sandwich, Android 4.0.1). Du kannst dieses Feature aber auch explizit auf App-Ebene oder Aktivitätsebene aktivieren.

App-Ebene

Füge in der Android-Manifestdatei das folgende Attribut zum <application>-Tag hinzu, um die Hardware-Beschleunigung für die gesamte App zu aktivieren:

<application android:hardwareAccelerated="true" ...>

Aktivitätsebene

Wenn du das Feature nur für bestimmte Aktivitäten in deiner App aktivieren möchtest, kannst du das folgende Feature in der Android-Manifestdatei zum <activity>-Tag hinzufügen. Im folgenden Beispiel wird die Hardware-Beschleunigung für die AudienceNetworkActivity aktiviert, die für das Rendering von Interstitial Ads und Videos mit Belohnung verwendet wird:

<activity android:name="com.facebook.ads.AudienceNetworkActivity" android:hardwareAccelerated="true" .../>

Nächste Schritte