Benutzerdefinierte Ereignisse für Interstitial-Anzeigen

Plattform auswählen: Android (Beta) Neu Android iOS

Vorbereitung

Schließen Sie die Einrichtung benutzerdefinierter Ereignisse ab.

Interstitial-Anzeige anfordern

Wenn das Werbebuchungszeilenelement für benutzerdefinierte Ereignisse in der Wasserfall-Mediationskette erreicht wird, wird die Methode loadInterstitialAd() für den Klassennamen aufgerufen, den Sie beim Erstellen eines benutzerdefinierten Ereignisses angegeben haben. In diesem Fall befindet sich die Methode in SampleCustomEvent, die dann die Methode loadInterstitialAd() in SampleInterstitialCustomEventLoader aufruft.

Wenn Sie eine Interstitial-Anzeige anfordern möchten, erstellen oder ändern Sie eine Klasse, die Adapter erweitert, um loadInterstitialAd() zu implementieren. Erstellen Sie außerdem eine neue Klasse, um MediationInterstitialAd zu implementieren.

In unserem Beispiel für benutzerdefinierte Ereignisse, SampleCustomEvent erweitert die Adapter Klasse und delegiert dann an SampleInterstitialCustomEventLoader.

Java

package com.google.ads.mediation.sample.customevent;

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationAdConfiguration;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationInterstitialAd;
import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback;
...

public class SampleCustomEvent extends Adapter {
  private SampleInterstitialCustomEventLoader interstitialLoader;
  @Override
  public void loadInterstitialAd(
      @NonNull MediationInterstitialAdConfiguration adConfiguration,
      @NonNull
          MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback>
              callback) {
    interstitialLoader = new SampleInterstitialCustomEventLoader(adConfiguration, callback);
    interstitialLoader.loadAd();
  }
}

SampleInterstitialCustomEventLoader ist für die folgenden Aufgaben verantwortlich:

  • Laden der Interstitial-Anzeige und Aufrufen einer MediationAdLoadCallback Methode nach Abschluss des Ladevorgangs.

  • Implementieren der MediationInterstitialAd-Schnittstelle.

  • Empfangen und Melden von Anzeigenereignis-Callbacks an Google Mobile Ads SDK.

Der optionale Parameter, der in der AdMob-UI definiert ist, ist in der Anzeigenkonfiguration enthalten. Auf den Parameter kann über adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD) zugegriffen werden. Dieser Parameter ist in der Regel eine Anzeigenblock-ID, die ein Werbenetzwerk-SDK benötigt, wenn ein Anzeigenobjekt instanziiert wird.

Java

package com.google.ads.mediation.sample.customevent;

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationInterstitialAdConfiguration;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationInterstitialAd;
import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback;
...

public class SampleInterstitialCustomEventLoader extends SampleAdListener
    implements MediationInterstitialAd {

  /** A sample third-party SDK interstitial ad. */
  private SampleInterstitial sampleInterstitialAd;

  /** Configuration for requesting the interstitial ad from the third-party network. */
  private final MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration;

  /** Callback for interstitial ad events. */
  private MediationInterstitialAdCallback interstitialAdCallback;

  /** Callback that fires on loading success or failure. */
  private final MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback>
      mediationAdLoadCallback;

  /** Constructor. */
  public SampleInterstitialCustomEventLoader(
      @NonNull MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration,
      @NonNull MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback>
              mediationAdLoadCallback) {
    this.mediationInterstitialAdConfiguration = mediationInterstitialAdConfiguration;
    this.mediationAdLoadCallback = mediationAdLoadCallback;
  }

  /** Loads the interstitial ad from the third-party ad network. */
  public void loadAd() {
    // All custom events have a server parameter named "parameter" that returns
    // back the parameter entered into the UI when defining the custom event.
    Log.i("InterstitialCustomEvent", "Begin loading interstitial ad.");
    String serverParameter = mediationInterstitialAdConfiguration.getServerParameters().getString(
        MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD);
    Log.d("InterstitialCustomEvent", "Received server parameter.");

    sampleInterstitialAd =
        new SampleInterstitial(mediationInterstitialAdConfiguration.getContext());
    sampleInterstitialAd.setAdUnit(serverParameter);

    // Implement a SampleAdListener and forward callbacks to mediation.
    sampleInterstitialAd.setAdListener(this);

    // Make an ad request.
    Log.i("InterstitialCustomEvent", "start fetching interstitial ad.");
    sampleInterstitialAd.fetchAd(
        SampleCustomEvent.createSampleRequest(mediationInterstitialAdConfiguration));
  }

public SampleAdRequest createSampleRequest(
      MediationAdConfiguration mediationAdConfiguration) {
    SampleAdRequest request = new SampleAdRequest();
    request.setTestMode(mediationAdConfiguration.isTestRequest());
    request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet());
    return request;
  }
}

Je nachdem, ob die Anzeige erfolgreich abgerufen wurde oder ein Fehler aufgetreten ist, rufen Sie entweder onSuccess() oder onFailure()auf. onSuccess() wird aufgerufen, indem eine Instanz der Klasse übergeben wird, die MediationInterstitialAd implementiert.

In der Regel werden diese Methoden in Callbacks aus dem Drittanbieter-SDK implementiert, das Ihr Adapter implementiert. In diesem Beispiel hat das Beispiel-SDK einen SampleAdListener mit relevanten Callbacks:

Java

@Override
public void onAdFetchSucceeded() {
  interstitialAdCallback = mediationAdLoadCallback.onSuccess(this);
}

@Override
public void onAdFetchFailed(SampleErrorCode errorCode) {
  mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode));
}

MediationInterstitialAd erfordert die Implementierung einer showAd()-Methode, um die Anzeige zu präsentieren:

Java

@Override
public void showAd(@NonNull Context context) {
  sampleInterstitialAd.show();
}

Mediationsereignisse an Google Mobile Ads SDK weiterleiten

Sobald onSuccess() aufgerufen wird, kann das zurückgegebene MediationInterstitialAdCallback Objekt vom Adapter verwendet werden, um Präsentationsereignisse aus dem Drittanbieter-SDK an Google Mobile Ads SDK weiterzuleiten. Die Klasse SampleInterstitialCustomEventLoader erweitert die Schnittstelle SampleAdListener, um Callbacks aus dem Beispiel-Werbenetzwerk an das Google Mobile Ads SDK weiterzuleiten.

Es ist wichtig, dass Ihr benutzerdefiniertes Ereignis so viele dieser Callbacks wie möglich weiterleitet, damit Ihre App diese entsprechenden Ereignisse vom Google Mobile Ads SDK erhält. Hier ein Beispiel für die Verwendung von Callbacks:

Java

@Override
public void onAdFullScreen() {
  interstitialAdCallback.reportAdImpression();
  interstitialAdCallback.onAdOpened();
}

@Override
public void onAdClosed() {
  interstitialAdCallback.onAdClosed();
}

Damit ist die Implementierung benutzerdefinierter Ereignisse für Interstitial-Anzeigen abgeschlossen. Das vollständige Beispiel ist auf GitHub verfügbar. Sie können es mit einem bereits unterstützten Werbenetzwerk verwenden oder es so ändern, dass Interstitial-Anzeigen für benutzerdefinierte Ereignisse präsentiert werden.