Cuando se produce una impresión, el SDK de anuncios de Google para dispositivos móviles proporciona datos de ingresos publicitarios asociados con esa impresión. Puedes usar los datos para calcular el valor del ciclo de vida de un usuario o reenviar los datos a otros sistemas relevantes.
El objetivo de esta guía es ayudarte a implementar la captura de datos de ingresos publicitarios a nivel de las impresiones en tu app para Android.
Requisitos previos
- Asegúrate de haber activado la función de ingresos publicitarios a nivel de las impresiones en la IU de AdMob.
- Importa el SDK de anuncios de Google para dispositivos móviles 21.1.0 o una versión posterior.
- Completa la guía de introducción.
Para poder recibir ingresos publicitarios a nivel de la impresión, debes implementar al menos uno de los siguientes formatos de anuncios:
Controlador de eventos pagados
Cada formato de anuncio tiene un elemento OnPaidEventListener
.
Durante el ciclo de vida de un evento de anuncio, el SDK de anuncios de Google para dispositivos móviles supervisa los eventos de impresión y, luego, invoca al controlador con un valor obtenido.
En el siguiente ejemplo, se controlan los eventos pagados de un anuncio recompensado:
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 obtener más información sobre la fuente de anuncios ganadora, consulta Cómo recuperar información sobre la respuesta del anuncio.
Integración de socios de atribución en aplicaciones (AAP)
Para obtener todos los detalles sobre cómo reenviar datos de ingresos publicitarios a plataformas de estadísticas, consulta la guía para socios:
SDK de socios |
---|
Ajustar |
AppsFlyer |
Singular |
Tenjin |
Prácticas recomendadas para la implementación
- Establece el objeto de escucha inmediatamente después de crear el objeto de anuncio o de obtener acceso a él, y definitivamente antes de mostrar el anuncio. Esto garantiza que no te pierdas ninguna devolución de llamada de eventos pagados.
- Envía la información de los ingresos publicitarios a nivel de la impresión a tu servidor de análisis preferido de inmediato en el momento en que se llame a la devolución de llamada del evento pagado. Esto te garantiza que no pierdas accidentalmente ninguna devolución de llamada y evita discrepancias de datos.
AdValue
AdValue
es una clase que representa el valor monetario que se obtuvo por un anuncio, incluido el código de moneda del valor y su tipo de precisión codificado como se indica a continuación.
PrecisionType | Descripción |
---|---|
UNKNOWN |
Un valor de anuncio desconocido. Se muestra cuando el pingback de LTV está habilitado, pero no hay suficientes datos disponibles. |
ESTIMATED |
Es un valor estimado del anuncio calculado a partir de los datos agregados. |
PUBLISHER_PROVIDED |
Un valor del anuncio proporcionado por el publicador, como los CPM manuales en un grupo de mediación |
PRECISE |
Es el valor exacto que se pagó por este anuncio. |
En el caso de la mediación de AdMob, AdMob intenta proporcionar un valor de ESTIMATED
para las fuentes de anuncios que están optimizadas.
PUBLISHER_PROVIDED
.
Prueba las impresiones de las fuentes de anuncios de licitación
Después de que se produce un evento de ingresos publicitarios a nivel de la impresión para una fuente de anuncios de ofertas a través de una solicitud de prueba, solo recibes los siguientes valores:
UNKNOWN
: Indica el tipo de precisión.
0
: Indica el valor del anuncio.
Anteriormente, es posible que hayas visto el tipo de precisión como un valor diferente de UNKNOWN
y un valor del anuncio superior a 0
.
Para obtener más información sobre cómo enviar una solicitud de anuncio de prueba, consulta Cómo habilitar dispositivos de prueba.