Pré-requisitos
Conclua a configuração de eventos personalizados.
Solicitar um anúncio intersticial
Quando o item de linha de evento personalizado é alcançado na cadeia de mediação em cascata, o método loadInterstitialAd() é chamado no nome da classe fornecido ao criar um evento personalizado. Nesse caso, o 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(); } }
O SampleInterstitialCustomEventLoader é responsável pelas seguintes tarefas:
Carregar o anúncio intersticial e invocar um método
MediationAdLoadCallbackquando o carregamento for concluído.Implementar a interface
MediationInterstitialAd.Receber e informar callbacks de eventos de anúncios ao 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).
Normalmente, esse parâmetro é 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 se o anúncio é buscado ou encontra um erro, você
chamaria
onSuccess()
ou
onFailure().
onSuccess() é chamado ao transmitir uma instância da classe que implementa
MediationInterstitialAd.
Normalmente, esses métodos são implementados em callbacks do SDK de terceiros que seu adaptador implementa. 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)); }
O 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 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 exemplo 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 os 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 (em inglês). É possível usar com uma rede de publicidade já compatível ou modificar para mostrar anúncios intersticiais de eventos personalizados.