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 hierarquia, 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(); } }
SampleInterstitialCustomEventLoader é responsável pelas seguintes tarefas:
Carregar o anúncio intersticial e invocar um
MediationAdLoadCallbackmétodo quando o carregamento for concluído.Implementar a interface
MediationInterstitialAd.Receber e informar callbacks de eventos de anúncios ao Google Mobile Ads SDK.
O parâmetro opcional definido na interface do Ad Manager está incluído na configuração do anúncio. O parâmetro pode ser acessado por 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 se o anúncio é buscado ou encontra um erro, você
chama
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 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 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 Google Mobile Ads SDK
Depois que onSuccess() é chamado, o objeto MediationInterstitialAdCallback
retornado pode ser usado pelo adaptador para encaminhar eventos de apresentação do
SDK de terceiros para Google Mobile Ads SDK. A classe SampleInterstitialCustomEventLoader estende a interface SampleAdListener para encaminhar callbacks da rede de publicidade de amostra para o 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 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 (link em inglês). Você pode usá-lo com uma rede de publicidade já compatível ou modificá-lo para mostrar anúncios intersticiais de eventos personalizados.