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 cascata, o método loadInterstitialAd() é chamado no nome da classe que você forneceu ao criar um evento personalizado. Nesse caso, esse método está em SampleCustomEvent, que chama o método loadInterstitialAd() 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.

No nosso exemplo de evento personalizado, SampleCustomEvent estende a classe Adapter e 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();
  }
}

SampleInterstitialCustomEventLoader é responsável pelas seguintes tarefas:

  • Carregar o anúncio intersticial e invocar um método MediationAdLoadCallback quando o carregamento for concluído.

  • Implementação da interface MediationInterstitialAd.

  • Receber e informar 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 do Ad Manager é 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 geralmente é um identificador de bloco de anúncios que um SDK da rede de publicidade requer 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 se o anúncio é buscado com êxito ou encontra um erro, você vai chamar onSuccess() ou onFailure(). onSuccess() é chamado transmitindo uma instância da classe que implementa MediationInterstitialAd.

Normalmente, esses métodos são implementados em callbacks do SDK de terceiros que o adaptador implementa. Para este exemplo, o SDK de exemplo tem uma 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 exige 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 para o SDK dos anúncios para dispositivos móveis do Google

Depois que onSuccess() for chamado, o objeto MediationInterstitialAdCallback retornado poderá ser usado pelo adaptador para encaminhar eventos de apresentação do SDK de terceiros para o 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 exemplo para o SDK dos anúncios para dispositivos móveis do Google.

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

Java

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

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

Isso conclui a implementação de 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á tem suporte ou modificá-lo para exibir anúncios intersticiais de evento personalizados.