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, müssen Sie eine Klasse erstellen oder ändern, die Adapter auf loadRewardedAd() implementieren. Erstellen Sie außerdem eine neue Klasse, die implementiert werden soll. MediationRewardedAd

In unserem Beispiel für benutzerdefinierte Ereignisse SampleCustomEvent erweitert die Adapter-Klasse 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 vom SDK eines Werbenetzwerks beim Instanziieren eines Anzeigenobjekts erforderlich ist.

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 auftritt, rufen Sie entweder onSuccess() oder onFailure() onSuccess() wird aufgerufen, indem eine Instanz der Klasse übergeben wird, die MediationRewardedAd.

Üblicherweise werden diese Methoden innerhalb von Callbacks aus dem Drittanbieter-SDK Ihres Adapters. In diesem Beispiel enthält das Beispiel-SDK hat ein SampleAdListener mit relevanten Callbacks:

Java

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

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

Zum Anzeigen von MediationRewardedAd muss die Methode showAd() implementiert werden die Anzeige:

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 Die Klasse SampleRewardedCustomEventLoader erweitert die SampleAdListener zur Weiterleitung von Rückrufen vom Beispielwerbenetzwerk an die Google Mobile- Ads SDK.

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.