Um adaptador de mediação recebe mensagens e solicitações do SDK dos anúncios para dispositivos móveis do Google e se comunica com um SDK de rede de terceiros para atender a essas solicitações.
Este guia é destinado a redes de publicidade que querem criar um adaptador de mediação de anúncios premiados para a mediação de anúncios para dispositivos móveis do Google. Um SDK de amostra é usado nos snippets de código abaixo para fins de demonstração. Confira uma implementação completa de um adaptador criado para este SDK de amostra no projeto de mediação doAndroid (link em inglês). Este guia explica como criar o adaptador.
Definir o nome da classe do adaptador e os parâmetros do servidor
As redes de publicidade mediadas pela plataforma de Mediação da AdMob geralmente exigem um ou mais identificadores para identificar um editor. Eles são representados como parâmetros do servidor e definidos na configuração de uma rede de publicidade de terceiros para mediação na interface da AdMob.
Antes de desenvolver um adaptador de mediação, você precisa fornecer ao Google o nome da classe do adaptador e outros parâmetros necessários para ter acesso à sua rede de anúncios.
Implementar a classe do adaptador
A primeira etapa é implementar a classe abstrata Adapter:
...
import com.google.android.gms.ads.mediation.Adapter;
...
public class SampleAdapter extends Adapter {
...
}
Essa mudança garante que sua classe implemente vários métodos discutidos abaixo.
Informar números de versão
O adaptador precisa informar ao SDK dos anúncios para dispositivos móveis do Google a versão do adaptador e a do SDK de terceiros. As versões são informadas
usando VersionInfo
.
Os adaptadores de código aberto e com versões
do Google
usam um esquema de versão de adaptador de quatro dígitos, mas VersionInfo
permite apenas três dígitos. Para contornar esse problema, é recomendável combinar os
dois últimos dígitos na versão do patch, conforme mostrado abaixo:
...
import com.google.android.gms.ads.VersionInfo;
...
public class SampleAdapter extends Adapter implements SampleRewardedAdListener {
...
@Override
public VersionInfo getVersionInfo() {
String versionString = BuildConfig.VERSION_NAME;
String[] splits = versionString.split("\\.");
if (splits.length >= 4) {
int major = Integer.parseInt(splits[0]);
int minor = Integer.parseInt(splits[1]);
int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
return new VersionInfo(major, minor, micro);
}
return new VersionInfo(0, 0, 0);
}
@Override
public VersionInfo getSDKVersionInfo() {
String versionString = SampleAdRequest.getSDKVersion();
String[] splits = versionString.split("\\.");
if (splits.length >= 3) {
int major = Integer.parseInt(splits[0]);
int minor = Integer.parseInt(splits[1]);
int micro = Integer.parseInt(splits[2]);
return new VersionInfo(major, minor, micro);
}
return new VersionInfo(0, 0, 0);
}
...
}
Inicializar o adaptador
Após a inicialização do SDK dos anúncios para dispositivos móveis do Google de um app, o initialize()
é invocado em todos os adaptadores configurados para o app na IU da AdMob.
O argumento List<MediationConfiguration>
fornece informações sobre todos os canais configurados para sua rede de publicidade na IU da AdMob. Use essas informações para inicializar o SDK da rede de publicidade. Depois que o SDK da rede de publicidade for
inicializado, informe o sucesso ou a falha na inicialização ao SDK de anúncios para dispositivos móveis do Google
invocando o método onInitializationSucceeded()
ou
onInitializationFailed()
no argumento InitializationCompleteCallback
fornecido na chamada initialize()
.
...
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...
public class SampleAdapter extends Adapter {
...
@Override
public void initialize(
Context context,
InitializationCompleteCallback initializationCompleteCallback,
List<MediationConfiguration> mediationConfigurations) {
if (context == null) {
initializationCompleteCallback.onInitializationFailed(
"Initialization Failed: Context is null.");
return;
}
// The Sample SDK doesn't have an initialization method, so this example
// immediately reports a success callback.
initializationCompleteCallback.onInitializationSucceeded();
}
...
}
Solicitar um anúncio premiado
Use o método loadRewardedAd()
para solicitar um anúncio premiado. Manter uma referência a MediationAdLoadCallback
, que permite informar um carregamento de anúncio bem-sucedido ou com falha ao SDK dos anúncios para dispositivos móveis do Google.
O objeto MediationRewardedAdCallback
vai estar disponível quando onSuccess()
for
invocado, que você vai usar depois para redirecionar outros eventos de anúncios, como cliques ou
recompensas concedidas.
...
import com.google.ads.mediation.sample.sdk.SampleAdRequest;
import com.google.ads.mediation.sample.sdk.SampleRewardedAd;
import com.google.ads.mediation.sample.sdk.SampleRewardedAdListener;
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 SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
/**
* A MediationAdLoadCallback that handles any callback when a Sample rewarded
* ad finishes loading.
*/
private MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> adLoadCallBack;
/**
* Represents a SampleRewardedAd.
*/
private SampleRewardedAd sampleRewardedAd;
/**
* Used to forward rewarded video ad events to the Google Mobile Ads SDK..
*/
private MediationRewardedAdCallback rewardedAdCallback;
...
// Hold a reference to the MediationAdLoadCallback object to report ad load
// events to the Google Mobile Ads SDK.
@Override
public void loadRewardedAd(
MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
mediationAdLoadCallback) {
adLoadCallBack = mediationAdLoadCallback;
MediationRewardedAdConfiguration adConfiguration = mediationRewardedAdConfiguration;
String adUnitId = adConfiguration.getServerParameters().getString(SAMPLE_AD_UNIT_KEY);
sampleRewardedAd = new SampleRewardedAd(adUnitId);
SampleAdRequest request = new SampleAdRequest();
sampleRewardedAd.setListener(this);
sampleRewardedAd.loadAd(request);
}
// Hold a reference to the MediationRewardedAdCallback object to report ad
// lifecycle events to the Google Mobile Ads SDK.
@Override
public void onRewardedAdLoaded() {
rewardedAdCallback = mediationAdLoadCallBack.onSuccess(this);
}
@Override
public void onRewardedAdFailedToLoad(SampleErrorCode error) {
mediationAdLoadCallBack.onFailure(error.toString());
}
...
}
Veicular o anúncio
O SDK dos anúncios para dispositivos móveis do Google pode chamar o método showAd()
do seu adaptador a qualquer momento depois de ser notificado de um carregamento de anúncio bem-sucedido. O adaptador deve exibir o anúncio premiado. Se, por algum motivo, o anúncio não puder ser mostrado, chame o
callback
onAdFailedToShow()
.
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
@Override
public void showAd(Context context) {
if (!(context instanceof Activity)) {
rewardedAdCallback.onAdFailedToShow(
"An activity context is required to show Sample rewarded ad.");
return;
}
Activity activity = (Activity) context;
if (!sampleRewardedAd.isAdAvailable()) {
rewardedAdCallback.onAdFailedToShow("No ads to show.");
return;
}
sampleRewardedAd.showAd(activity);
}
...
}
Informar eventos de anúncios ao SDK de anúncios para dispositivos móveis
Depois de mostrar o anúncio, o adaptador deve informar os eventos de ciclo de vida do anúncio conforme
adequado ao SDK dos anúncios para dispositivos móveis do Google usando o objeto MediationRewardedAdCallback
fornecido no momento de carregamento do anúncio.
Normalmente, esses callbacks são encaminhados de métodos de callback disparados pelo SDK da rede de publicidade. Este exemplo implementa os callbacks do SDK de amostra e os mapeia para
os callbacks disponíveis em MediationRewardedAdCallback
.
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
@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();
}
...
}
Os eventos de anúncios que precisam ser informados ao SDK dos anúncios para dispositivos móveis do Google estão detalhados abaixo:
Evento do anúncio | Descrição |
---|---|
onAdOpened() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio será aberto. |
onVideoStart() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que um anúncio premiado começou a ser reproduzido. |
reportAdImpression() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que uma impressão ocorreu no anúncio. |
onVideoComplete() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio premiado terminou a reprodução. |
onUserEarnedReward() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o usuário ganhou um prêmio. |
reportAdClicked() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio recebeu um clique. |
onAdClosed() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio está fechado. |
onAdFailedToShow() | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio não foi exibido. |