Requisitos previos
Completa la configuración de eventos personalizados.
Solicita un anuncio recompensado
Cuando se alcanza el elemento de línea de evento personalizado en la cadena de mediación en cascada,
se llama al método loadRewardedAd() en el nombre de la clase que
proporcionaste cuando creaste un evento
personalizado. En este caso,
ese método está en SampleCustomEvent, que luego llama al loadRewardedAd()
método en SampleRewardedCustomEventLoader.
Para solicitar un anuncio recompensado, crea o modifica una clase que extienda Adapter para
implementar loadRewardedAd(). Además, crea una clase nueva para implementar
MediationRewardedAd.
En nuestro ejemplo de evento personalizado,
SampleCustomEvent extiende la clase Adapter y, luego, delega a
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 es responsable de las siguientes tareas:
Cargar el anuncio recompensado
Implementar la interfaz
MediationRewardedAdRecibir y enviar devoluciones de llamada de eventos de anuncios a GMA Next-Gen SDK.
El parámetro opcional definido en la IU de Ad Manager se
incluye en la configuración del anuncio. Se puede acceder al parámetro a través de
adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD).
Por lo general, este parámetro es un identificador de bloque de anuncios que requiere un SDK de red de publicidad
cuando se crea una instancia de un objeto de anuncio.
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; } }
Según si el anuncio se recupera correctamente o si se produce un error, tú
llamarías a
onSuccess()
o a
onFailure().
Se llama a onSuccess() pasando una instancia de la clase que implementa
MediationRewardedAd.
Por lo general, estos métodos se implementan dentro de las devoluciones de llamada del
SDK de terceros que implementa tu adaptador. Para este ejemplo, el SDK de muestra
tiene un SampleAdListener con devoluciones de llamada relevantes:
Java
@Override public void onRewardedAdLoaded() { rewardedAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
MediationRewardedAd requiere la implementación de un método showAd() para mostrar
el anuncio:
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); }
Reenvía eventos de mediación a GMA Next-Gen SDK
Una vez que se llama a onSuccess(), el adaptador puede usar el objeto MediationRewardedAdCallback
que se muestra para reenviar eventos de presentación del SDK de terceros a GMA Next-Gen SDK. La clase
SampleRewardedCustomEventLoader extiende la SampleAdListener
interfaz para reenviar devoluciones de llamada de la red de publicidad de muestra al SDK de anuncios de Google para dispositivos
móviles.
Es importante que tu evento personalizado reenvíe la mayor cantidad posible de estas devoluciones de llamada para que tu app reciba estos eventos equivalentes del GMA Next-Gen SDK. A continuación, se muestra un ejemplo del uso de devoluciones de llamada:
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(); }
Con esto, se completa la implementación de eventos personalizados para anuncios recompensados. El ejemplo completo está disponible en GitHub. Puedes usarlo con una red de publicidad que ya sea compatible o modificarlo para mostrar anuncios recompensados de eventos personalizados.