Benutzerdefinierte Ereignisse für Anzeigen mit Prämie

Vorbereitung

Schließen Sie die Einrichtung benutzerdefinierter Ereignisse ab.

Anzeige mit Prämie anfordern

Wenn die benutzerdefinierte Ereignis-Werbebuchung in der Vermittlungskette der Vermittlungsabfolge erreicht ist, Die Methode loadRewardedAd() wird für den Klassennamen aufgerufen, wird beim Erstellen einer benutzerdefinierten . In diesem Fall Diese Methode befindet sich in SampleCustomEvent, womit dann die Methode loadRewardedAd() aufgerufen wird. in SampleRewardedCustomEventLoader.

Wenn Sie eine Anzeige mit Prämie anfordern möchten, erstellen oder ändern Sie eine Klasse, die Adapter erweitert, um loadRewardedAd() zu implementieren. Erstellen Sie außerdem eine neue Klasse, um MediationRewardedAd zu implementieren.

In unserem Beispiel für benutzerdefinierte Ereignisse SampleCustomEvent erweitert die Klasse Adapter und delegiert dann SampleRewardedCustomEventLoader

Java

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

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration;
import com.google.android.gms.ads.mediation.MediationAdConfiguration;
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 SampleCustomEvent extends Adapter {

  private SampleNativeCustomEventLoader nativeLoader;

  @Override
  public void loadRewardedAd(
      @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      @NonNull
          MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
              mediationAdLoadCallback) {
    rewardedLoader =
        new SampleRewardedCustomEventLoader(
            mediationRewardedAdConfiguration, mediationAdLoadCallback);
    rewardedLoader.loadAd();
  }
}

SampleRewardedCustomEventLoader ist für die folgenden Aufgaben verantwortlich:

  • Anzeige mit Prämie wird geladen

  • MediationRewardedAd-Schnittstelle implementieren

  • Callbacks für Anzeigenereignisse an das Google Mobile Ads SDK empfangen und melden

Der optionale Parameter auf der Ad Manager-Benutzeroberfläche ist die in der Anzeigenkonfiguration enthalten sind. Der Zugriff auf den Parameter ist über adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD) Dieser Parameter ist in der Regel eine Anzeigenblock-ID, die von einem Werbenetzwerk-SDK beim Instanziieren eines Anzeigenobjekts benötigt wird.

Java

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

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration;
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 SampleRewardedCustomEventLoader extends SampleRewardedAdListener
    implements MediationRewardedAd {

  /** Configuration for requesting the rewarded ad from the third-party network. */
  private final MediationRewardedAdConfiguration mediationRewardedAdConfiguration;

  /**
   * A {@link MediationAdLoadCallback} that handles any callback when a Sample
   * rewarded ad finishes loading.
   */
  private final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
      mediationAdLoadCallback;

  /** Callback for rewarded ad events. */
  private MediationRewardedAdCallback rewardedAdCallback;

  /** Constructor. */
  public SampleRewardedCustomEventLoader(
      @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
              mediationAdLoadCallback) {
    this.mediationRewardedAdConfiguration = mediationRewardedAdConfiguration;
    this.mediationAdLoadCallback = mediationAdLoadCallback;
  }

  /** Loads the rewarded 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 AdMob UI when defining the custom event.
    Log.i("RewardedCustomEvent", "Begin loading rewarded ad.");
    String serverParameter = mediationRewardedAdConfiguration
        .getServerParameters()
        .getString(MediationConfiguration
        .CUSTOM_EVENT_SERVER_PARAMETER_FIELD);
    Log.d("RewardedCustomEvent", "Received server parameter.");
    SampleAdRequest request = createSampleRequest(mediationRewardedAdConfiguration);
    sampleRewardedAd = new SampleRewardedAd(serverParameter);
    sampleRewardedAd.setListener(this);
    Log.i("RewardedCustomEvent", "Start fetching rewarded ad.");
    sampleRewardedAd.loadAd(request);
  }

  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 MediationRewardedAd implementiert.

Normalerweise werden diese Methoden in Callbacks aus dem SDK des Drittanbieters implementiert, das Sie in Ihrem Adapter verwenden. In diesem Beispiel hat das Beispiel-SDK eine SampleAdListener mit relevanten Callbacks:

Java

@Override
public void onRewardedAdLoaded() {
  rewardedAdCallback = mediationAdLoadCallback.onSuccess(this);
}

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

Für MediationRewardedAd muss eine showAd()-Methode implementiert werden, um die Anzeige anzuzeigen:

Java

@Override
public void showAd(Context context) {
  if (!(context instanceof Activity)) {
    rewardedAdCallback.onAdFailedToShow(
        SampleCustomEventError.createCustomEventNoActivityContextError());
    return;
  }
  Activity activity = (Activity) context;

  if (!sampleRewardedAd.isAdAvailable()) {
    rewardedAdCallback.onAdFailedToShow(
        SampleCustomEventError.createCustomEventAdNotAvailableError());
    return;
  }
  sampleRewardedAd.showAd(activity);
}

Vermittlungsereignisse an das Google Mobile Ads SDK weiterleiten

Nach dem Aufruf von onSuccess() wird die zurückgegebene MediationRewardedAdCallback -Objekt kann dann vom Adapter verwendet werden, um Präsentationsereignisse aus dem mit dem Google Mobile Ads SDK verknüpfen. Die Klasse SampleRewardedCustomEventLoader erweitert die SampleAdListener-Schnittstelle, um Callbacks vom Beispielwerbenetzwerk an das Google Mobile Ads SDK weiterzuleiten.

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

Java

@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();
}

Damit ist die Implementierung der benutzerdefinierten Ereignisse für Anzeigen mit Prämie abgeschlossen. Die vollständige Beispiel verfügbar auf GitHub Sie können es mit einem Werbenetzwerk verwenden, das bereits unterstützt wird, oder zu Anzeigen mit Prämie für benutzerdefinierte Ereignisse.