Pré-requisitos
Conclua a configuração dos 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 da classe que você
fornecidas ao criar um objeto
evento. Nesse caso,
Esse método está em SampleCustomEvent
, que chama o loadRewardedAd()
em SampleRewardedCustomEventLoader
.
Para solicitar um anúncio premiado, crie ou modifique uma classe que estenda Adapter
a
implementar loadRewardedAd()
. Além disso, crie uma nova classe para implementar
MediationRewardedAd
:
Em nosso exemplo de evento personalizado,
SampleCustomEvent
estende a classe Adapter
e a 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(); } }
SampleRewardedCustomEventLoader
é responsável pelas seguintes tarefas:
Carregar o anúncio premiado
Implementar a interface
MediationRewardedAd
.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 do Ad Manager é
incluído na configuração do anúncio. O parâmetro pode ser acessado pela
adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD)
:
Esse parâmetro normalmente é um identificador de bloco de anúncios que o SDK de uma 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 o anúncio ser buscado ou encontrar um erro, você
chamaria
onSuccess()
ou
onFailure()
onSuccess()
é chamado transmitindo uma instância da classe que implementa
MediationRewardedAd
.
Normalmente, esses métodos são implementados dentro de callbacks do
SDK de terceiros implementado pelo adaptador. Para este 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)); }
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 ao SDK dos anúncios para dispositivos móveis do Google
Depois que onSuccess()
é chamado, o MediationRewardedAdCallback
retornado
pode ser usado pelo adaptador para encaminhar eventos de apresentação do
de terceiros para o SDK dos anúncios para dispositivos móveis do Google. A
A classe SampleRewardedCustomEventLoader
estende o SampleAdListener
interface para encaminhar chamadas de retorno da rede de anúncios de amostra para a rede do Google Celular
SDK de anúncios do Google.
É importante que seu evento personalizado encaminhe o máximo possível desses callbacks possível, para que seu aplicativo receba esses eventos equivalentes do SDK de anúncios para dispositivos móveis. Veja um exemplo de como usar 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 dos eventos personalizados em anúncios premiados. O está disponível GitHub. Você pode usá-lo com uma rede de publicidade que já seja compatível ou modificá-lo para exibir anúncios premiados de eventos personalizados.