Tipps für die Audience Network SDK-Integration für Android

Hier findest du einige Best Practices für die Implementierung der Integration für Android. Diese Tipps und Szenarien helfen dir und deinem Team, das Audience Network-SDK besser zu verstehen, die Integration effektiver zu gestalten und deine Lösung nach dem Launch weiter zu aktualisieren.

Voraussetzungen

Du solltest eines der folgenden Beispiele abgeschlossen haben:

Problem: Abstürze durch mehrfache Aufrufe von „loadAd“.

Gute Vorgehensweisen

Schlechte Vorgehensweisen


Gute Vorgehensweisen:

Tipp 1: Rufe loadAd nur erneut auf, wenn die Werbeanzeige abgebrochen wurde oder beim Laden ein Fehler auftritt, mit Ausnahme von Banner Ads.

Auch wenn du über eine abgebrochene Anzeige oder einen Rückruffehler informiert wirst, solltest du eine maximale Anzahl an Wiederholungen verwenden, um Endlosschleifen zu vermeiden. onError(Ad, AdError) wird immer aufgerufen, egal welcher Fehler beim Laden der Werbeanzeige aufgetreten ist. Für den Fall Kein Internet ist es beispielsweise sinnvoll, das Laden der Werbeanzeige nach Erreichen der maximalen Anzahl an Wiederholungen einzustellen.

Im Audience Network-SDK solltest du loadAd für alle Arten von Werbeanzeigen mit Ausnahme von Banner Ads mit Bedacht aufrufen. Rufe loadAd niemals auf, während eine Werbung angezeigt wird. Implementiere nach Möglichkeit AdListener, um benachrichtigt zu werden, wenn eine Werbeanzeige abgebrochen, abgeschlossen oder geschlossen wurde oder ein Fehler aufgetreten ist. In diesem Fall kannst du loadAd problemlos neu aufrufen.

Beispiel 1: Rufe loadAd im onInterstitialDismissed-Rückruf auf.

private InterstitialAd mInterstitialAd;
private static final MAX_NUMBER_OF_RETRIES = 3;
private boolean shouldLoadAd = true;
private int retryCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onCreate 
    super.onCreate(savedInstanceState);
    ...
    mInterstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
    InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
        ...
        @Override
        public void onInterstitialDismissed(Ad ad) {
            // Interstitial dismissed callback
            if (shouldLoadAd) {
                /* Change shouldLoadAd value to false, 
                    or a new interstitial ad will show immediately 
                    when previous interstitial ad gets dismissed. */
                shouldLoadAd = false;
                mInterstitialAd.loadAd();
            }
        }
        
        @Override
        public void onError(Ad ad, AdError adError) {
            // Ad error callback
            // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES
            if(retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) {
                retryCount += 1;
                mInterstitialAd.loadAd();
            }
        }
        ...
    };
    mInterstitialAd.loadAd(
            mInterstitialAd.buildLoadAdConfig()
                    .withAdListener(interstitialAdListener)
                    .build());
    ...
}

Beispiel 2: Rufe „loadAd“ im onError-Rückruf für NativeAd auf.

private static final MAX_NUMBER_OF_RETRIES = 3;
private NativeAd mNativeAd;
private int retryCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new AdListener() {
        ...
        @Override
        public void onError(Ad ad, AdError error) {
            // Ad error callback
            // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES
            if (retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) {
                retryCount += 1;
                mNativeAd.loadAd();
            }
        }
        ...
    };
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(nativeAdListener)
                    .build());
    ...
}

Tipp 2: Die Werbeanzeigeninstanz ist kein Werbeanzeigenmanager. Erstelle immer eine neue Instanz, wenn du eine Werbeanzeige für Native Ads oder Banner Ads neu laden möchtest.

Beispiel:

private Button showNativeAdButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    showNativeAdButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Create a native ad request with a placement ID
            nativeAd = new NativeAd(NativeAdSampleActivity.this, "YOUR_PLACEMENT_ID");

            // Create a listener to get notified when the ad was loaded.
            NativeAdListener nativeAdListener = new AdListener() {
                ...
            }

            // Initiate a request to load an ad.
            nativeAd.loadAd(
                    nativeAd.buildLoadAdConfig()
                            .withAdListener(nativeAdListener)
                            .build());
        }
    });
    ...
}

Schlechte Vorgehensweisen

Tipp 1: loadAd sollte niemals in bestimmten Android-Rückrufen wie onResume() oder onStart() verwendet werden, da loadAd andernfalls möglicherweise immer wieder aufgerufen wird, ohne die letzte Werbeanzeige im Speicher zu verwerfen oder freizugeben.


Beispiel:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    ...
}

@Override
protected void onResume() {
    super.onResume();
    ...
    // DON'T DO THIS!
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(NativeAdSampleActivity.this)
                    .build());
}

Tipp 2: Achte darauf, loadAd im onError-Rückruf nicht unbegrenzt aufzurufen. Das folgende Beispiel zeigt, wie du es nie machen solltest. Im Fall „Kein Internet“ wird loadAd immer wieder aufgerufen, wodurch die App irgendwann abstürzt.


Beispiel:

private NativeAd mNativeAd;
private boolean shouldRetry = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new AdListener() {
        ...
        @Override
        public void onError(Ad ad, AdError error) {
            // Ad error callback
            // Remember to change shouldRetry to false, or DON'T implement like this! 
            if (shouldRetry) {
                mNativeAd.loadAd();
            }
        }
        ...
    };
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(NativeAdSampleActivity.this)
                    .build());
    ...
}

Nächste Schritte

Weitere Ressourcen

Leitfaden für erste Schritte

Technischer Leitfaden für die ersten Schritte mit Audience Network

API-Referenz

Referenz zum Facebook-SDK für iOS