Compatibilidad con la mediación en el entorno de ejecución de SDK

La mediación es una forma común en que las plataformas de anuncios orientadas a la venta ofrecen administración del rendimiento. En un flujo de trabajo de mediación, el SDK de mediación ("mediador") invoca varias redes de publicidad ("mediado" o "mediados") para obtener el mejor anuncio para un espacio determinado. En algunos casos, tanto el mediador como las redes de publicidad que invoca necesitan que sus SDKs estén en el dispositivo y puedan interactuar.

En este documento, se describen los cambios clave en los flujos de trabajo de mediación en el SDK Runtime. Abarca los siguientes temas:

  • Diferencias entre los flujos de mediación anteriores y la compatibilidad actual con la mediación de SDK Runtime
  • Acciones de configuración para los flujos de trabajo de mediación en el entorno de ejecución de SDK y las diferentes etapas de transición
  • Orientación para controlar situaciones en las que no todos los SDKs se migraron al entorno de ejecución

La compatibilidad con los anuncios mediados en el entorno de ejecución de SDK está disponible desde AGP 8.5 y desde las siguientes versiones de las bibliotecas de Jetpack del entorno de ejecución de SDK:

Biblioteca de AndroidX Versión
androidx.privacysandbox.activity 1.0.0-alpha01
androidx.privacysandbox.sdkruntime 1.0.0-alpha13
androidx.privacysandbox.tools 1.0.0-alpha08
androidx.privacysandbox.ui 1.0.0-alpha09

Glosario

Los siguientes términos son clave para comprender la mediación en el entorno de ejecución del SDK:

  • SDK habilitado para el entorno de ejecución (SDK de RE): Es un SDK creado para ejecutarse en el entorno de ejecución de SDK y comunicarse con la app a través de la comunicación entre procesos (IPC).
  • SDK compatible con el entorno de ejecución (SDK RA): Es un SDK no habilitado para el entorno de ejecución, vinculado a la app de forma estática, que puede contener el código existente de tu SDK, así como código nuevo para llamar a tu SDK habilitado para el entorno de ejecución.
  • SDK integrado en la app: Es un SDK que se ejecuta vinculado a la app de forma estática y no tiene conocimiento del entorno de ejecución de SDK. Puede tratarse de una red de publicidad que no realizó la transición al entorno de ejecución de SDK o de un adaptador personalizado del publicador.
  • Mediador: SDK de mediación de anuncios que proporciona un servicio de mediación en el dispositivo a través de la interacción con otros SDKs de redes de publicidad.
  • Mediatee: Es el SDK de la red de publicidad al que llama el mediador para proporcionar y renderizar un anuncio.
  • Adaptador de mediación: Son los SDKs que utiliza el SDK del mediador para proporcionar la traducción de la interfaz de la API y permitir la interoperabilidad con varios SDKs de mediación, que suelen ser proporcionados por el mediador. Pueden ser compatibles o no con el tiempo de ejecución.

Flujos de mediación típicos

Si tu SDK necesita admitir casos de uso de mediación en el entorno de ejecución del SDK, deberás implementar algunos cambios. En esta sección, se revisan los elementos clave de los flujos de mediación para que podamos abordar los cambios necesarios para los mediadores y los mediandos.

Los flujos que describimos representan una versión simplificada de la mediación en el dispositivo con varios SDKs de redes de publicidad y sirven como base para analizar los cambios necesarios para que los recorridos de mediación sean compatibles con el SDK Runtime.

Dada la variación en las implementaciones del flujo de mediación, nos enfocamos en los siguientes dos flujos principales:

  • Inicialización (incluida la detección de redes de publicidad y la comunicación)
  • Presentación de la interfaz de usuario (IU) de anuncios

Inicialización

A continuación, se muestra un flujo estándar de inicialización, detección de redes publicitarias y comunicación:

  1. La app cliente inicia el mediador
  2. El mediador descubre e inicializa los mediadores y adaptadores pertinentes.
  3. El mediador usa sus adaptadores para comunicarse con cada mediado.
  4. La app cliente solicita al mediador que cargue un anuncio
  5. La app cliente solicita al mediador que muestre este anuncio

Presentación de la IU del anuncio

Cuando se trata de renderizar el anuncio después de la solicitud final del paso anterior, el flujo depende del tipo de anuncio:

Anuncios de banner Anuncios de pantalla completa Anuncios nativos
El SDK del mediador crea una vista de anuncio que contiene la vista de anuncio del mediado ganador.

También puede establecer listeners en esta View o actualizar automáticamente el anuncio (con el mismo objeto mediático o uno diferente).
El SDK del mediador solicita un anuncio de pantalla completa al mediado, que, a su vez, inicia una actividad. El publicador administra el control y la expansión de la vista con los componentes que devuelve el SDK del mediador.

Flujos de mediación en el entorno de ejecución de SDK

El funcionamiento de la mediación dentro del entorno de ejecución de SDK varía según si el elemento mediado está habilitado para el entorno de ejecución o no. Según esto, podemos tener las siguientes situaciones:

  • Tanto el mediador como el mediado se encuentran en el entorno de ejecución de SDK: Mediado habilitado para el entorno de ejecución
  • El mediador está en el entorno de ejecución de SDK y el mediado está integrado en la app: Mediado integrado en la app

RE Mediatee

En el siguiente diagrama de arquitectura, se muestra una descripción general de alto nivel de la interacción de los SDKs habilitados para el entorno de ejecución (RE) y compatibles con el entorno de ejecución (RA) del mediador, los adaptadores de mediación de RE y los SDKs de RE de los elementos mediados.

Los adaptadores de mediación deben estar en el mismo proceso que el elemento mediado con el que se conectan, por lo que también deberán migrar al entorno de ejecución del SDK.

Diagrama de arquitectura que muestra una descripción general de alto nivel de la interacción de los SDKs habilitados para el entorno de ejecución (RE) y compatibles con el entorno de ejecución (RA) del mediador, los adaptadores de mediación de RE y los SDKs de RE de los elementos mediados.
Figura 1: Tanto el mediador como el mediado son SDKs habilitados para el entorno de ejecución.

Inicialización

Cuando se considera la inicialización, el descubrimiento y la comunicación del mediador y el mediado habilitados para el tiempo de ejecución, el flujo seguirá estos pasos:

  1. La app (o el SDK de RA) carga e inicializa el SDK del mediador con SdkSandboxManager#loadSdk.
  2. Durante su inicialización, el SDK del mediador carga e inicializa los mediatees requeridos en el tiempo de ejecución del SDK con SdkSandboxController#loadSdk.
  3. El SDK de RE puede descubrir todos los SDKs cargados en el entorno de ejecución llamando a SdkSandboxController#getSandboxedSdks.
Diagrama de secuencia de mediación de RE a RE que muestra el flujo descrito anteriormente.
Figura 2: Flujo para inicializar un mediatee de RE.

Presentación de la IU del anuncio

En la siguiente sección, se explica cómo cargar banners y anuncios de pantalla completa desde un mediado de RE.

Anuncios de banner de RE Mediatee

Dada una solicitud de la app para cargar un anuncio de banner, el flujo para completar la renderización es el siguiente:

  1. El mediador selecciona el mediado ganador para este anuncio.
  2. El mediador obtiene un SandboxedUiAdapter del mediado.
  3. El mediador reenvía el UiAdapter a la app.
Flujo para completar la renderización de un anuncio banner en la mediación de RE-RE.
Figura 3: Flujo para completar la renderización de un anuncio de banner desde un elemento mediado de RE.

Obtén más información sobre el uso de SandboxedUiAdapter y la biblioteca de IU del entorno de ejecución del SDK.

Superposiciones en anuncios de banner

Si los mediadores quieren agregar una superposición al anuncio, deberán modificar el flujo de la siguiente manera:

  1. El mediador crea un diseño con su diseño superpuesto y un SandboxedSdkView.
  2. El mediador selecciona el mediado ganador para este anuncio.
  3. El mediador obtiene un SandboxedUiAdapter del mediado.
  4. El mediador establece el UiAdapter del mediado en SandboxedSdkView.
  5. El mediador comparte la vista completada con la app.
Flujo para superponer una vista sobre un anuncio de banner obtenido de un Mediatee de RE.
Flujo para superponer una vista sobre un anuncio de banner obtenido de un mediatee de RE.
RE Mediatee full-screen ads

Dada una solicitud de la app para cargar un anuncio de pantalla completa, el flujo sigue estos pasos:

  1. La app (o el SDK de RA) pasa un objeto SdkActivityLauncher al mediador con la solicitud para cargar un anuncio.
    1. El cliente puede restringir la creación de actividades con un predicado.
  2. El mediador selecciona el mediado ganador para este anuncio.
  3. El mediador solicita al mediado que cargue un anuncio y pasa el objeto SdkActivityLauncher de la app.
  4. El mediatee registra un controlador de actividad y obtiene un token de identificador para la actividad registrada.
  5. El mediatee usa SdkActivityLauncher para solicitar el inicio de una actividad con este token.
  6. Si el predicado de la app cliente lo permite, el entorno de ejecución del SDK iniciará esta actividad en el proceso dedicado.
Flujo para mostrar una app de pantalla completa mediada desde un RE Mediatee.
Figura 4. Diagrama de flujo que ilustra cómo cargar un anuncio de pantalla completa mediado desde un RE Mediatee.

Obtén más información sobre la compatibilidad con Activity para los anuncios de pantalla completa en el entorno de ejecución del SDK.

Mediatee en la app

En el siguiente diagrama de arquitectura, se muestra una descripción general de alto nivel de la interacción de los SDK de RE y RA del mediador, de los adaptadores de mediación que no conocen el SDK Runtime y de los SDK de los mediandos vinculados de forma estática a la app (que tampoco conocen el entorno de ejecución).

Diagrama de arquitectura que muestra una descripción general de alto nivel de la interacción de los SDKs de RE y RA del mediador, de los adaptadores de mediación que no conocen el SDK Runtime y de los SDKs de los elementos mediados vinculados de forma estática a la app (también desconocen el entorno de ejecución).
Figura 5: El mediatee se vincula de forma estática a la app, incluso si conoce el SDK de RE.

Inicialización

Dado que, en este caso, los elementos mediados se vinculan de forma estática a la app y aún no se migraron al entorno de ejecución de SDK, el SDK habilitado para el entorno de ejecución del mediador debe tener un proceso para registrarlos.

Se debe poder acceder a este registro a través de la API del mediador, pero los detalles de implementación quedan a discreción de cada mediador. Llamamos a esta API MediationSandboxedSdk#registerInAppMediatee.

Cuando se considera la inicialización, el descubrimiento y la comunicación de un SDK de mediador de RE y los SDKs de mediado en la app, el flujo seguirá estos pasos:

  1. La app carga e inicializa el SDK compatible con el tiempo de ejecución del mediador.
  2. El SDK de RA del mediador:
    1. Inicializa el SDK de RE del mediador con SdkSandboxManager#loadSdk.
    2. Inicializa todos los SDKs de mediatees integrados en la app.
    3. Descubre y registra los SDKs de Mediatee integrados en la app con la API que proporciona el SDK de RE, MediationSandboxedSdk#registerInAppMediate.

Además de tener registrados todos los SDKs de mediación integrados en la app, el SDK RE del mediador puede descubrir todos los SDKs cargados en el entorno de ejecución de SDK con SdkSandboxController#getSandboxedSdks.

Secuencia que ilustra el flujo descrito para inicializar un elemento mediático integrado en la app.
Figura 6: Ten en cuenta que usamos la API del mediador sugerido para registrar la referencia a los mediadores integrados en la app.

Presentación de la IU del anuncio

En la siguiente sección, se explica cómo cargar banners y anuncios de pantalla completa desde un mediador integrado en la app.

Anuncios de banner mediados en la aplicación

Dada una solicitud de la app para cargar un anuncio de banner, el flujo para completar la renderización es el siguiente:

  1. El SDK compatible con el entorno de ejecución del mediador reenvía la solicitud de la app a su SDK habilitado para el entorno de ejecución.
  2. El SDK de RE del mediador selecciona el mediado pertinente.
  3. El SDK habilitado para el entorno de ejecución del mediador recupera la referencia al mediado y solicita cargar un anuncio a través del SDK de RA.
  4. El SDK de RA obtiene una vista del elemento de medios integrado en la app.
  5. El SDK de RA crea un objeto SandboxedUiAdapter para la vista que recibió.
  6. El SDK de RA reenvía el objeto UiAdapter al SDK de RE.
  7. El SDK de RE reenvía el UiAdapter a la app.
Flujo para completar la renderización de anuncios de banner desde un elemento mediático en la app
Figura 7: Ten en cuenta que el mediador no debe superponer vistas sobre V1 cuando lo obtiene de un mediado integrado en la app.
Anuncios de pantalla completa de Mediatee en la aplicación

Dada una solicitud de la app para cargar un anuncio de pantalla completa, el flujo sigue estos pasos:

  1. La app pasa un SdkActivityLauncher al SDK de RA del mediador con la solicitud para cargar un anuncio.
    1. El cliente puede restringir la creación de actividades con un predicado.
  2. El SDK de RA del mediador reenvía la solicitud de la app a su SDK de RE.
  3. El SDK de RE del mediador:
    1. Selecciona el mediatee pertinente.
    2. Recupera la referencia al mediatee integrado en la app.
    3. Son las solicitudes para cargar un anuncio a través del SDK de RA.
  4. El SDK de RA solicita al mediatee que cargue un anuncio.
  5. El mediado inicia la actividad directamente. No se respetará el predicado de la app.
Flujo de carga de anuncios de pantalla completa cuando el mediatee está en el proceso de la app.
Figura 8. El predicado se ignorará en el mediatee integrado en la app.

Interactúa y comparte comentarios

Privacy Sandbox en Android es un proyecto en curso, y este documento refleja su diseño actual. Tus comentarios son fundamentales a medida que seguimos desarrollando y mejorando sus funciones. Informa un error para proporcionar comentarios.