Pré-requisitos
Conclua a configuração de eventos personalizados.
Solicitar um anúncio premiado
Quando o item de linha de evento personalizado é alcançado na cadeia de mediação em cascata, o método loadRewardedAd() é chamado no nome da classe que você forneceu ao criar um evento personalizado. Nesse caso, o 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 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:
Carregando o anúncio premiado
Implementar a interface
MediationRewardedAd.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 do Ad Manager é
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.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 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
MediationRewardedAd.
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 onRewardedAdLoaded() { rewardedAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
O MediationRewardedAd exige 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 ao SDK dos anúncios para dispositivos móveis do Google
Depois que onSuccess() é chamado, o objeto MediationRewardedAdCallback 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
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 seu evento personalizado encaminhe o máximo 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 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 (em inglês). Você pode usar com uma rede de publicidade já compatível ou modificar para mostrar anúncios premiados de eventos personalizados.