Adapter für Anzeigen mit Prämie implementieren

Ein Vermittlungsadapter empfängt Nachrichten und Anfragen vom Google Mobile Ads SDK und kommuniziert mit dem SDK eines Drittanbieter-Werbenetzwerks, um diese Anfragen zu verarbeiten.

Dieser Leitfaden richtet sich an Werbenetzwerke, die einen Adapter für Anzeigen mit Prämie für die Google-Vermittlung für mobile Anzeigen erstellen möchten. Zu Demonstrationszwecken wird in den Code-Snippets unten ein Beispiel-SDK verwendet. Eine vollständige Implementierung eines Adapters, der für dieses Beispiel-SDK erstellt wurde, finden Sie in unserem Android-Vermittlungsprojekt. In dieser Anleitung wird erläutert, wie Sie den Adapter erstellen.

Name der Adapterklasse und Serverparameter definieren

Werbenetzwerke, die über die AdMob-Vermittlungsplattform vermittelt werden, benötigen in der Regel eine oder mehrere Kennungen, um einen Publisher zu identifizieren. Diese Kennungen werden als Serverparameter dargestellt und definiert, wenn ein Drittanbieter-Werbenetzwerk für die Vermittlung in der AdMob-UI konfiguriert wird.

Bevor Sie einen Vermittlungsadapter entwickeln, müssen Sie Google den Namen Ihrer Adapterklasse und andere erforderliche Parameter mitteilen, um Zugriff auf Ihr Werbenetzwerk zu erhalten.

Adapterklasse implementieren

Im ersten Schritt implementieren Sie die abstrakte Klasse Adapter:

...
import com.google.android.gms.ads.mediation.Adapter;
...

public class SampleAdapter extends Adapter {
 ...
}

Diese Änderung stellt sicher, dass Ihre Klasse mehrere der unten beschriebenen Methoden implementiert.

Versionsnummern von Berichten

Der Adapter muss sowohl die Version des Adapters als auch die Version des Drittanbieter-SDK an das Google Mobile Ads SDK senden. Versionen werden mit VersionInfogemeldet.

Die Open-Source- und versionierten Adapter von Google verwenden ein vierstelliges Adapterversionsschema, VersionInfounterstützt jedoch nur drei Ziffern. Zur Umgehung dieses Problems empfiehlt es sich, die letzten beiden Ziffern wie unten dargestellt in der Patchversion zu kombinieren:

...
import com.google.android.gms.ads.VersionInfo;
...

public class SampleAdapter extends Adapter implements SampleRewardedAdListener {
  ...
  @Override
  public VersionInfo getVersionInfo() {
    String versionString = BuildConfig.VERSION_NAME;
    String[] splits = versionString.split("\\.");

    if (splits.length >= 4) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }

  @Override
  public VersionInfo getSDKVersionInfo() {
    String versionString = SampleAdRequest.getSDKVersion();
    String[] splits = versionString.split("\\.");

    if (splits.length >= 3) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }
  ...
}

Adapter initialisieren

Nachdem das Google Mobile Ads SDK in einer App initialisiert wurde, wird initialize() auf allen Adaptern aufgerufen, die in der AdMob-Benutzeroberfläche für die App konfiguriert wurden.

Mit dem Argument List<MediationConfiguration> erhalten Sie Informationen zu allen Placements, die in der AdMob-Benutzeroberfläche für Ihr Werbenetzwerk konfiguriert wurden. Initialisieren Sie anhand dieser Informationen Ihr Werbenetzwerk-SDK. Nach der Initialisierung Ihres Werbenetzwerk-SDKs können Sie dem Google Mobile Ads SDK eine erfolgreiche oder fehlgeschlagene Initialisierung melden. Rufen Sie dazu die Methode onInitializationSucceeded() oder onInitializationFailed() für das Argument InitializationCompleteCallback im initialize()-Aufruf auf.

...
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...

public class SampleAdapter extends Adapter {
  ...
  @Override
  public void initialize(
      Context context,
      InitializationCompleteCallback initializationCompleteCallback,
      List<MediationConfiguration> mediationConfigurations) {
    if (context == null) {
      initializationCompleteCallback.onInitializationFailed(
          "Initialization Failed: Context is null.");
      return;
    }

    // The Sample SDK doesn't have an initialization method, so this example
    // immediately reports a success callback.
    initializationCompleteCallback.onInitializationSucceeded();
  }
  ...
}

Anzeige mit Prämie anfordern

Verwenden Sie die Methode loadRewardedAd(), um eine Anzeige mit Prämie anzufordern. Verweisen Sie auf die MediationAdLoadCallback. Damit können Sie dem Google Mobile Ads SDK ein erfolgreiches oder fehlgeschlagenes Laden einer Anzeige melden.

Das MediationRewardedAdCallback-Objekt ist verfügbar, sobald onSuccess() aufgerufen wird. Sie können es später verwenden, um andere Anzeigenereignisse wie Klicks oder gewährte Prämien weiterzugeben.

...
import com.google.ads.mediation.sample.sdk.SampleAdRequest;
import com.google.ads.mediation.sample.sdk.SampleRewardedAd;
import com.google.ads.mediation.sample.sdk.SampleRewardedAdListener;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationRewardedAd;
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback;
...

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...

  /**
   * A MediationAdLoadCallback that handles any callback when a Sample rewarded
   * ad finishes loading.
   */
  private MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> adLoadCallBack;

  /**
   * Represents a SampleRewardedAd.
   */
  private SampleRewardedAd sampleRewardedAd;

  /**
   * Used to forward rewarded video ad events to the Google Mobile Ads SDK..
   */
  private MediationRewardedAdCallback rewardedAdCallback;

  ...

  // Hold a reference to the MediationAdLoadCallback object to report ad load
  // events to the Google Mobile Ads SDK.
  @Override
  public void loadRewardedAd(
      MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
          mediationAdLoadCallback) {
    adLoadCallBack = mediationAdLoadCallback;
    MediationRewardedAdConfiguration adConfiguration = mediationRewardedAdConfiguration;

    String adUnitId = adConfiguration.getServerParameters().getString(SAMPLE_AD_UNIT_KEY);

    sampleRewardedAd = new SampleRewardedAd(adUnitId);
    SampleAdRequest request = new SampleAdRequest();
    sampleRewardedAd.setListener(this);
    sampleRewardedAd.loadAd(request);
  }

  // Hold a reference to the MediationRewardedAdCallback object to report ad
  // lifecycle events to the Google Mobile Ads SDK.
  @Override
  public void onRewardedAdLoaded() {
    rewardedAdCallback = mediationAdLoadCallBack.onSuccess(this);
  }

  @Override
  public void onRewardedAdFailedToLoad(SampleErrorCode error) {
    mediationAdLoadCallBack.onFailure(error.toString());
  }
  ...
}

Anzeige einblenden

Das Google Mobile Ads SDK kann die Methode showAd() Ihres Adapters jederzeit aufrufen, nachdem das SDK über ein erfolgreiches Laden der Anzeige benachrichtigt wurde. Über den Adapter sollte die Anzeige mit Prämie ausgeliefert werden. Wenn die Anzeige aus irgendeinem Grund nicht ausgeliefert werden kann, rufen Sie den onAdFailedToShow()-Callback auf.

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...
  @Override
  public void showAd(Context context) {
    if (!(context instanceof Activity)) {
      rewardedAdCallback.onAdFailedToShow(
          "An activity context is required to show Sample rewarded ad.");
      return;
    }
    Activity activity = (Activity) context;

    if (!sampleRewardedAd.isAdAvailable()) {
      rewardedAdCallback.onAdFailedToShow("No ads to show.");
      return;
    }
    sampleRewardedAd.showAd(activity);
  }
  ...
}

Anzeigenereignisse an das Mobile Ads SDK melden

Nach der Auslieferung der Anzeige sollte der Adapter Lebenszyklusereignisse der Anzeige entsprechend dem Google Mobile Ads SDK melden. Dazu wird das MediationRewardedAdCallback-Objekt verwendet, das bei einer erfolgreichen Anzeigenladezeit bereitgestellt wird.

In der Regel werden diese Callbacks von Callback-Methoden weitergeleitet, die von Ihrem Werbenetzwerk-SDK ausgelöst werden. In diesem Beispiel werden die Sample SDK-Callbacks implementiert und den Callbacks zugeordnet, die unter MediationRewardedAdCallback verfügbar sind.

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...
  @Override
  public void onAdRewarded(final String rewardType, final int amount) {
    RewardItem rewardItem =
        new RewardItem() {
          @Override
          public String getType() {
            return rewardType;
          }

          @Override
          public int getAmount() {
            return amount;
          }
        };
    rewardedAdCallback.onUserEarnedReward(rewardItem);
  }

  @Override
  public void onAdClicked() {
    rewardedAdCallback.reportAdClicked();
  }

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

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

  @Override
  public void onAdCompleted() {
    rewardedAdCallback.onVideoComplete();
  }
  ...
}

Im Folgenden sind die Anzeigenereignisse aufgeführt, die an das Google Mobile Ads SDK gemeldet werden sollten:

Anzeigenereignis Beschreibung
onAdOpened() Das Google Mobile Ads SDK wird darüber informiert, dass die Anzeige geöffnet wird.
onVideoStart() Informiert das Google Mobile Ads SDK darüber, dass die Wiedergabe einer Anzeige mit Prämie gestartet wurde.
reportAdImpression() Informiert das Google Mobile Ads SDK darüber, dass bei der Anzeige eine Impression aufgetreten ist.
onVideoComplete() Informiert das Google Mobile Ads SDK darüber, dass die Anzeige mit Prämie vollständig wiedergegeben wurde.
onUserEarnedReward() Informiert das Google Mobile Ads SDK darüber, dass der Nutzer eine Prämie erhalten hat.
reportAdClicked() Informiert das Google Mobile Ads SDK darüber, dass auf die Anzeige geklickt wurde
onAdClosed() Informiert das Google Mobile Ads SDK darüber, dass die Anzeige geschlossen wurde.
onAdFailedToShow() Das Google Mobile Ads SDK wird darüber informiert, dass die Anzeige nicht ausgeliefert werden konnte.