Ingresos publicitarios a nivel de las impresiones

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

  • Importa el SDK de anuncios de Google para dispositivos móviles 21.1.0 o una versión posterior.

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.

En el caso de las fuentes de anuncios no optimizadas o en los casos en los que no hay suficientes datos agregados para informar una estimación significativa, se muestra el valor 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.