Eventos personalizados de anúncios intersticiais

Pré-requisitos

Conclua a configuração de eventos personalizados.

Solicitar um anúncio intersticial

Quando o item de linha do evento personalizado é alcançado na cadeia de mediação em hierarquia, the loadInterstitialAd() method é chamado no nome da classe fornecido ao criar um evento personalizado. Nesse caso, esse método está em SampleCustomEvent, que chama the loadInterstitialAd() method em SampleInterstitialCustomEventLoader.

Para solicitar um anúncio intersticial, crie ou modifique uma classe que estenda Adapter para implementar loadInterstitialAd(). Além disso, crie uma nova classe para implementar MediationInterstitialAd.

Em nosso exemplo de evento personalizado, SampleCustomEvent implementa the Adapter interface e, em seguida, delega para 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();
  }
}

OSampleInterstitialCustomEventLoader é responsável pelas seguintes tarefas:

  • Carregar o anúncio intersticial e invocarMediationAdLoadCallback method após a conclusão do carregamento

  • Implementar o MediationInterstitialAd interface

  • Receber e relatar callbacks de eventos de anúncios para o SDK dos anúncios para dispositivos móveis do Google.

O parâmetro opcional definido na interface AdMob é incluído na configuração do anúncio. O parâmetro pode ser acessado usando adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD). Esse parâmetro normalmente é um identificador de bloco de anúncios que um SDK de rede de publicidade exige ao instanciar um objeto de anúncio.

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

Dependendo de o anúncio ser buscado ou encontrar um erro, você chama onSuccess() ou onFailure(). O onSuccess() é chamado transmitindo uma instância da classe que implementa MediationInterstitialAd.

Normalmente, esses métodos são implementados dentro de callbacks do SDK de terceiros implementado pelo adaptador. Neste exemplo, o SDK de amostra tem um SampleAdListener com callbacks relevantes:

Java

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

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

MediationInterstitialAd requer a implementação de um método showAd() para mostrar o anúncio:

Java

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

Encaminhar eventos de mediação ao SDK dos anúncios para dispositivos móveis do Google

Depois que onSuccess() é chamado, o objeto MediationInterstitialAdCallback retornado pode ser usado pelo adaptador para encaminhar eventos de apresentação do SDK de terceiros ao SDK dos anúncios para dispositivos móveis do Google. A classe SampleInterstitialCustomEventLoader estende a interface SampleAdListener para encaminhar callbacks da rede de publicidade de amostra ao SDK dos anúncios para dispositivos móveis do Google.

É importante que seu evento personalizado encaminhe o maior número possível desses callbacks para que seu app receba esses eventos equivalentes do SDK dos anúncios para dispositivos móveis do Google. Confira um exemplo de como usar callbacks:

Java

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

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

Isto conclui a implementação dos eventos personalizados para anúncios intersticiais. O exemplo completo está disponível no GitHub. É possível usá-lo com uma rede de publicidade que já é compatível ou modificá-lo para exibir anúncios intersticiais de eventos personalizados.