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 é 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 da 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 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
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 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. 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 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.