Zdarzenia niestandardowe dotyczące reklam pełnoekranowych

Wymagania wstępne

Dokończ konfigurację zdarzeń niestandardowych.

Wysyłanie żądania reklamy pełnoekranowej

Gdy w łańcuchu zapośredniczenia kaskadowego zostanie osiągnięty element zamówienia związany ze zdarzeniem niestandardowym, w przypadku nazwy klasy podanej podczas tworzenia zdarzenia niestandardowego wywoływana jest metoda loadInterstitialAd(). W tym przypadku metoda znajduje się w SampleCustomEvent, która następnie wywołuje metodę loadInterstitialAd() w SampleInterstitialCustomEventLoader.

Aby wysłać żądanie wyświetlenia reklamy pełnoekranowej, utwórz lub zmodyfikuj klasę, która rozszerza Adapter, aby zaimplementować loadInterstitialAd(). Dodatkowo utwórz nową klasę, aby zaimplementować MediationInterstitialAd.

W naszym przykładzie zdarzenia niestandardowego klasa SampleCustomEvent rozszerza klasę Adapter, a następnie przekazuje wywołanie do klasy 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 odpowiada za te zadania:

  • Wczytywanie reklamy pełnoekranowej i wywoływanie metody MediationAdLoadCallback po zakończeniu wczytywania.

  • Implementacja interfejsu MediationInterstitialAd.

  • Otrzymywanie i zgłaszanie wywołań zwrotnych zdarzeń reklamowych do GMA Next-Gen SDK.

Parametr opcjonalny zdefiniowany w interfejsie AdMob jest uwzględniony w konfiguracji reklamy. Dostęp do parametru można uzyskać za pomocą funkcji adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD). Ten parametr jest zwykle identyfikatorem jednostki reklamowej, którego pakiet SDK sieci reklamowej wymaga podczas tworzenia instancji obiektu reklamy.

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;
  }
}

W zależności od tego, czy reklama zostanie pobrana, czy wystąpi błąd, wywołasz funkcję onSuccess() lub onFailure(). onSuccess() jest wywoływana przez przekazanie instancji klasy, która implementuje interfejs MediationInterstitialAd.

Zazwyczaj te metody są wdrażane w wywołaniach zwrotnych z pakietu SDK firmy zewnętrznej, który implementuje Twój adapter. W tym przykładzie pakiet SDK Sample zawiera element SampleAdListener z odpowiednimi wywołaniami zwrotnymi:

Java

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

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

MediationInterstitialAd wymaga wdrożenia metody showAd(), aby wyświetlać reklamę:

Java

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

Przekazywanie zdarzeń zapośredniczenia do GMA Next-Gen SDK

Po wywołaniu funkcji onSuccess() zwrócony obiekt MediationInterstitialAdCallback może być używany przez adapter do przekazywania zdarzeń związanych z wyświetlaniem z pakietu SDK firmy zewnętrznej do GMA Next-Gen SDK. Klasa SampleInterstitialCustomEventLoader rozszerza interfejs SampleAdListener w celu przekazywania wywołań zwrotnych z przykładowej sieci reklamowej do pakietu SDK do reklam mobilnych Google.

Ważne jest, aby zdarzenie niestandardowe przekazywało jak najwięcej tych wywołań zwrotnych, dzięki czemu aplikacja będzie otrzymywać równoważne zdarzenia z pakietu SDK do reklam mobilnych Google. Oto przykład użycia wywołań zwrotnych:

Java

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

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

W ten sposób zakończysz implementację zdarzeń niestandardowych w przypadku reklam pełnoekranowych. Pełny przykład jest dostępny na GitHub. Możesz go używać z obsługiwaną już siecią reklamową lub zmodyfikować go tak, aby wyświetlać reklamy pełnoekranowe zdarzeń niestandardowych.