Zdarzenia niestandardowe dotyczące reklam pełnoekranowych

Wybierz platformę: Android (beta) Nowość Android iOS

Wymagania wstępne

Skonfiguruj zdarzenia niestandardowe.

Wysyłanie żądania reklamy pełnoekranowej

Gdy w łańcuchu zapośredniczenia kaskadowego zostanie osiągnięta pozycja zdarzenia niestandardowego, w klasie o nazwie podanej podczas tworzenia zdarzenia niestandardowegozostanie wywołana metoda loadInterstitialAd(). W tym przypadku metoda ta znajduje się w klasie SampleCustomEvent, która następnie wywołuje metodę loadInterstitialAd() w klasie SampleInterstitialCustomEventLoader.

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

W naszym przykładzie zdarzenia niestandardowego, SampleCustomEvent rozszerza klasę Adapter, a następnie przekazuje zadanie do 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();
  }
}

Klasa SampleInterstitialCustomEventLoader odpowiada za te zadania:

  • wczytywanie reklamy pełnoekranowej i wywoływanie metody MediationAdLoadCallback po zakończeniu wczytywania;

  • implementowanie interfejsu MediationInterstitialAd;

  • otrzymywanie i zgłaszanie wywołań zwrotnych zdarzeń reklamowych do Google Mobile Ads SDK.

Opcjonalny parametr zdefiniowany w interfejsie AdMob jest uwzględniany w konfiguracji reklamy. Dostęp do parametru można uzyskać za pomocą kodu 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 metodę albo onSuccess() albo onFailure(). Metoda onSuccess() jest wywoływana przez przekazanie instancji klasy, która implementuje MediationInterstitialAd.

Zwykle te metody są implementowane w wywołaniach zwrotnych z pakietu SDK firmy zewnętrznej, który implementuje Twój adapter. W tym przykładzie pakiet SDK ma klasę 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));
}

Klasa MediationInterstitialAd wymaga zaimplementowania metody showAd() do wyświetlania reklamy:

Java

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

Przekazywanie zdarzeń zapośredniczenia do Google Mobile Ads SDK

Gdy zostanie wywołana metoda onSuccess(), adapter może użyć zwróconego obiektu MediationInterstitialAdCallback , aby przekazywać zdarzenia prezentacji z pakietu SDK firmy zewnętrznej do Google Mobile Ads SDK. Klasa SampleInterstitialCustomEventLoader rozszerza interfejs SampleAdListener, aby przekazywać wywołania zwrotne 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, aby aplikacja otrzymywała te same 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 kończy się implementacja zdarzeń niestandardowych w przypadku reklam pełnoekranowych. Pełny przykład znajdziesz na GitHub. Możesz go używać z siecią reklamową, która jest już obsługiwana, lub zmodyfikować go, aby wyświetlać reklamy pełnoekranowe ze zdarzeniami niestandardowymi.