Quando uma impressão ocorre, o SDK dos anúncios para dispositivos móveis do Google fornece dados de receita de publicidade associados a essa impressão. Você pode usar os dados para calcular o valor vitalício de um usuário ou encaminhar os dados para outros sistemas relevantes.
Este guia tem o objetivo de ajudar você a implementar a captura de dados de receita de publicidade no nível da impressão no seu app Android.
Pré-requisitos
- Confira se você ativou o recurso de receita de publicidade no nível da impressão na interface da AdMob.
- Importe o SDK dos anúncios para dispositivos móveis do Google 21.1.0 ou mais recente.
- Concluir o Guia para iniciantes.
Antes de receber qualquer receita de publicidade no nível da impressão, é necessário implementar pelo menos um formato de anúncio:
Manipulador de eventos pagos
Cada formato de anúncio tem um
OnPaidEventListener
.
Durante o ciclo de vida de um evento de anúncio, o SDK dos anúncios para dispositivos móveis do Google monitora
eventos de impressão e invoca o gerenciador com um valor ganho.
O exemplo a seguir processa eventos pagos para um anúncio premiado:
Kotlin
import com.google.android.gms.ads.rewarded.RewardedAd
class MainActivity : AppCompatActivity() {
private var rewardedAd: RewardedAd? = null
private final var TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
val adRequest = AdRequest.Builder().build()
RewardedAd.load(this, "AD_UNIT_ID",
adRequest, object: RewardedAdLoadCallback() {
override fun onAdLoaded(ad: RewardedAd) {
rewardedAd = ad
// Set paid event listener
rewardedAd.onPaidEventListener = OnPaidEventListener { adValue ->
// TODO: Send the impression-level ad revenue information to your preferred
// analytics server directly within this callback.
// Extract the impression-level ad revenue data.
val valueMicros = adValue.valueMicros
val currencyCode = adValue.currencyCode
val precision = adValue.precisionType
// Get the ad unit ID.
val adUnitId = rewardedAd.adUnitId
val loadedAdapterResponseInfo = rewardedAd.responseInfo.loadedAdapterResponse
val adSourceName = loadedAdapterResponseInfo.adSourceName
val adSourceId = loadedAdapterResponseInfo.adSourceId
val adSourceInstanceName = loadedAdapterResponseInfo.adSourceInstanceName
val adSourceInstanceId = loadedAdapterResponseInfo.adSourceInstanceId
val extras = rewardedAd.responseInfo.responseExtras
val mediationGroupName = extras.getString("mediation_group_name")
val mediationABTestName = extras.getString("mediation_ab_test_name")
val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
}
}
})
}
}
Java
import com.google.android.gms.ads.rewarded.RewardedAd;
public class MainActivity extends Activity {
private RewardedAd rewardedAd;
private final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
AdRequest adRequest = new AdRequest.Builder().build();
RewardedAd.load(this, "AD_UNIT_ID",
adRequest, new RewardedAdLoadCallback(){
@Override
public void onAdLoaded(@NonNull RewardedAd ad) {
rewardedAd = ad;
// Set paid event listener
rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
@Override
public void onPaidEvent(AdValue adValue) {
// TODO: Send the impression-level ad revenue information to your
//preferred analytics server directly within this callback.
// Extract the impression-level ad revenue data.
long valueMicros = adValue.getValueMicros();
String currencyCode = adValue.getCurrencyCode();
int precision = adValue.getPrecisionType();
// Get the ad unit ID.
String adUnitId = rewardedAd.getAdUnitId();
AdapterResponseInfo loadedAdapterResponseInfo = rewardedAd.getResponseInfo().
getLoadedAdapterResponseInfo();
String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();
Bundle extras = rewardedAd.getResponseInfo().getResponseExtras();
String mediationGroupName = extras.getString("mediation_group_name");
String mediationABTestName = extras.getString("mediation_ab_test_name");
String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
}
});
}
});
}
}
Para mais informações sobre a origem de anúncio vencedora, consulte Extrair informações sobre a resposta do anúncio.
Integração de parceiros de atribuição de app (AAPs)
Para detalhes completos sobre como encaminhar dados de receita de anúncios para plataformas de análise, consulte o guia do parceiro:
SDK do parceiro |
---|
Adjust (link em inglês) |
AppsFlyer |
Singular |
Tenjin (link em inglês) |
Práticas recomendadas de implementação
- Defina o listener imediatamente após criar ou ter acesso ao objeto de anúncio e definitivamente antes de mostrar o anúncio. Isso garante que você não perca nenhum callback de evento pago.
- Envie as informações de receita de publicidade no nível da impressão para o servidor de análise preferido imediatamente quando o callback de evento pago for chamado. Isso garante que você não perca callbacks acidentalmente e evita discrepâncias de dados.
AdValue
AdValue
é uma classe que representa o valor monetário ganho com um anúncio,
incluindo o código de moeda do valor e o tipo de precisão codificado conforme abaixo.
PrecisionType | Descrição |
---|---|
UNKNOWN |
Um valor de anúncio desconhecido. Isso é retornado quando o pingback de LTV está ativado, mas não há dados suficientes disponíveis. |
ESTIMATED |
É um valor de anúncio estimado com base nos dados agregados. |
PUBLISHER_PROVIDED |
Um valor de anúncio fornecido pelo editor, como CPMs manuais em um grupo de mediação. |
PRECISE |
O valor exato pago por este anúncio. |
No caso da AdMob Mediation, ela tenta
fornecer um valor ESTIMATED
para origens de anúncios que são
otimizadas.
PUBLISHER_PROVIDED
é
retornado.
Testar impressões de origens de anúncios dos lances
Depois que um evento de receita de publicidade no nível da impressão ocorre para uma origem de anúncios de lances por uma solicitação de teste, você recebe apenas os seguintes valores:
UNKNOWN
: indica o tipo de precisão.
0
: indica o valor do anúncio.
Anteriormente, o tipo de precisão era um valor diferente de
UNKNOWN
e um valor de anúncio maior que 0
.
Para saber mais sobre como enviar uma solicitação de anúncio de teste, consulte Ativar dispositivos de teste.