Pré-requisitos
Conclua a configuração de eventos personalizados.
Solicitar um anúncio premiado
Quando o item de linha do evento personalizado é alcançado na cadeia de mediação em hierarquia,
o método loadRewardedAd() é chamado no nome de classe que você
forneceu ao criar um evento
personalizado. Nesse caso,
esse método está em SampleCustomEvent, que chama o método loadRewardedAd()
em SampleRewardedCustomEventLoader.
Para solicitar um anúncio premiado, crie ou modifique uma classe que estenda Adapter para implementar loadRewardedAd(). Além disso, crie uma nova classe para implementar
MediationRewardedAd.
No nosso exemplo de evento personalizado,
SampleCustomEvent estende a classe Adapter e, em seguida, delega para
SampleRewardedCustomEventLoader.
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationRewardedAd; import com.google.android.gms.ads.mediation.MediationRewardedAdCallback; ... public class SampleCustomEvent extends Adapter { private SampleNativeCustomEventLoader nativeLoader; @Override public void loadRewardedAd( @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration, @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback) { rewardedLoader = new SampleRewardedCustomEventLoader( mediationRewardedAdConfiguration, mediationAdLoadCallback); rewardedLoader.loadAd(); } }
O SampleRewardedCustomEventLoader é responsável pelas seguintes tarefas:
Carregar o anúncio premiado
Implementar a interface
MediationRewardedAd.Receber e informar callbacks de eventos de anúncio para Google Mobile Ads SDK (Legacy).
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 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.MediationRewardedAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationRewardedAd; import com.google.android.gms.ads.mediation.MediationRewardedAdCallback; ... public class SampleRewardedCustomEventLoader extends SampleRewardedAdListener implements MediationRewardedAd { /** Configuration for requesting the rewarded ad from the third-party network. */ private final MediationRewardedAdConfiguration mediationRewardedAdConfiguration; /** * A {@link MediationAdLoadCallback} that handles any callback when a Sample * rewarded ad finishes loading. */ private final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback; /** Callback for rewarded ad events. */ private MediationRewardedAdCallback rewardedAdCallback; /** Constructor. */ public SampleRewardedCustomEventLoader( @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration, @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback) { this.mediationRewardedAdConfiguration = mediationRewardedAdConfiguration; this.mediationAdLoadCallback = mediationAdLoadCallback; } /** Loads the rewarded 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 AdMob UI when defining the custom event. Log.i("RewardedCustomEvent", "Begin loading rewarded ad."); String serverParameter = mediationRewardedAdConfiguration .getServerParameters() .getString(MediationConfiguration .CUSTOM_EVENT_SERVER_PARAMETER_FIELD); Log.d("RewardedCustomEvent", "Received server parameter."); SampleAdRequest request = createSampleRequest(mediationRewardedAdConfiguration); sampleRewardedAd = new SampleRewardedAd(serverParameter); sampleRewardedAd.setListener(this); Log.i("RewardedCustomEvent", "Start fetching rewarded ad."); sampleRewardedAd.loadAd(request); } 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 for buscado ou se houver um erro, você
vai chamar
onSuccess()
ou
onFailure().
onSuccess() é chamado transmitindo uma instância da classe que implementa
MediationRewardedAd.
Normalmente, esses métodos são implementados em callbacks do SDK de terceiros que seu adaptador implementa. Neste exemplo, o SDK de exemplo
tem um SampleAdListener com callbacks relevantes:
Java
@Override public void onRewardedAdLoaded() { rewardedAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
O MediationRewardedAd requer a implementação de um método showAd() para mostrar o anúncio:
Java
@Override public void showAd(Context context) { if (!(context instanceof Activity)) { rewardedAdCallback.onAdFailedToShow( SampleCustomEventError.createCustomEventNoActivityContextError()); return; } Activity activity = (Activity) context; if (!sampleRewardedAd.isAdAvailable()) { rewardedAdCallback.onAdFailedToShow( SampleCustomEventError.createCustomEventAdNotAvailableError()); return; } sampleRewardedAd.showAd(activity); }
Encaminhar eventos de mediação para Google Mobile Ads SDK (Legacy)
Depois que onSuccess() é chamado, o objeto MediationRewardedAdCallback
retornado pode ser usado pelo adaptador para encaminhar eventos de apresentação do
SDK de terceiros para Google Mobile Ads SDK (Legacy). A classe SampleRewardedCustomEventLoader 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 o evento personalizado encaminhe o maior número possível desses callbacks para que o app receba os eventos equivalentes do Google Mobile Ads SDK (Legacy). Veja um exemplo de uso de callbacks:
Java
@Override public void onAdRewarded(final String rewardType, final int amount) { RewardItem rewardItem = new RewardItem() { @Override public String getType() { return rewardType; } @Override public int getAmount() { return amount; } }; rewardedAdCallback.onUserEarnedReward(rewardItem); } @Override public void onAdClicked() { rewardedAdCallback.reportAdClicked(); } @Override public void onAdFullScreen() { rewardedAdCallback.onAdOpened(); rewardedAdCallback.onVideoStart(); rewardedAdCallback.reportAdImpression(); } @Override public void onAdClosed() { rewardedAdCallback.onAdClosed(); } @Override public void onAdCompleted() { rewardedAdCallback.onVideoComplete(); }
Isso conclui a implementação de eventos personalizados para anúncios premiados. O exemplo completo está disponível no GitHub. Você pode usá-lo com uma rede de publicidade que já é compatível ou modificá-lo para mostrar anúncios premiados de eventos personalizados.