Eventos personalizados de anúncios intersticiais

Pré-requisitos

Conclua a configuração dos eventos personalizados.

Solicitar um anúncio intersticial

Quando o item de linha do evento personalizado é alcançado na cadeia de mediação em hierarquia, o método loadInterstitialAd() é chamado no nome da classe que você forneceu ao criar um objeto evento. Nesse caso, Esse método está em SampleCustomEvent, que chama o 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.

Em nosso exemplo de evento personalizado, SampleCustomEvent estende a classe Adapter e a 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 uma MediationAdLoadCallback quando o carregamento for concluído.

  • Implementar a interface MediationInterstitialAd.

  • Receber e relatar callbacks de eventos de anúncio 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 pela adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD): Esse parâmetro normalmente é um identificador de bloco de anúncios que o SDK de uma 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ê chamaria onSuccess() ou onFailure() 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. Para este 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 MediationInterstitialAdCallback retornado pode ser usado pelo adaptador para encaminhar eventos de apresentação do ao SDK dos anúncios para dispositivos móveis do Google. A A classe SampleInterstitialCustomEventLoader estende o SampleAdListener interface para encaminhar chamadas de retorno da rede de anúncios de amostra para a rede do Google Celular SDK de anúncios do Google.

É importante que seu evento personalizado encaminhe o máximo possível desses callbacks possível, para que seu aplicativo receba esses eventos equivalentes do SDK de anúncios para dispositivos móveis. Veja um exemplo de como usar 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 está disponível GitHub. Você pode usá-lo com uma rede de publicidade que já seja compatível ou modificá-lo para exibir anúncios intersticiais de evento personalizado.