Descripción general de la API de Topics para dispositivos móviles

Enviar comentarios

Acerca de la API de Topics

En la publicidad para dispositivos móviles, los anunciantes desean publicar anuncios relevantes que se relacionen con el interés de un usuario. Por ejemplo, si a un usuario le interesa la información relacionada con la cocina, es posible que piense que los anuncios relacionados con ese tema son más relevantes que los que no se relacionan con sus intereses.

La publicidad contextual se basa únicamente en los intereses derivados del contenido actual que se ve (y en el que se anuncia). Uno de los beneficios de la API de Topics es que permite que las apps que son útiles para el usuario, pero que quizás no se puedan monetizar fácilmente a través de la publicidad contextual, muestren anuncios más relevantes al usuario que de otra forma, lo que ayuda a financiar las apps que usa.

La API de Topics infiere indicadores generales de interés en el dispositivo a partir de las apps que usa un usuario. Estos indicadores, llamados temas, se compartirán con los anunciantes y admitirán indicadores contextuales y otros propios sin necesidad de hacer un seguimiento de los usuarios individuales en las apps.

La API de Topics está diseñada para admitir SDKs de publicidad de terceros que, por lo general, operan en varias apps. Esta compatibilidad consiste en mostrar algunos de los intereses entre apps que esos SDKs normalmente observarían. Los desarrolladores de apps individuales no deben esperar obtener información adicional sobre sus usuarios.

Conceptos clave

  • Un tema es aquel que es de interés legible para un usuario y forma parte de la taxonomía de Topics.
  • Un llamador (una app o un SDK de terceros que se usa en la app) observa un tema si envía una solicitud a la API de Topics desde una app asociada con este tema durante los últimos 3 ciclos de entrenamiento.
  • Un ciclo de entrenamiento es un período de procesamiento de temas, como una semana.

Cómo funciona

Con esta propuesta, la API de Topics tiene la intención de proporcionar a los llamadores temas de interés generales y basados en el uso de la app del usuario. Estos temas se pueden usar para complementar cualquier información contextual relacionada con la app que desee mostrar un anuncio y se pueden combinar a fin de ayudar a encontrar un anuncio adecuado para el usuario.

Consulta la Guía para desarrolladores de la API de Topics para obtener ejemplos de código que muestran cómo configurar la capacidad de recuperar temas para la publicidad basada en intereses. Nota: Las APIs aún no están finalizadas.

Los temas se seleccionan desde una taxonomía de código abierto predefinida.

La plataforma usa un modelo clasificador para inferir temas. La implementación de la API de Topics y su uso del clasificador formarán parte del Proyecto de código abierto de Android y mejorarán con el tiempo.

A fines ilustrativos, el siguiente ejemplo de código demuestra el uso de temas para obtener un anuncio basado en intereses. Las APIs que se usan aquí no son definitivas.

// Initialize the Topics API.
…
topicsFuture = AdvertisingTopicsClient.getTopics();

// Retrieve Topics and use them in Ad request.
Futures.addCallback(
    topicsFuture,
    new FutureCallback<AdvertisingTopicsInfo>() {
        @Override
        public void onSuccess(@Nullable AdvertisingTopicsInfo topicsInfo) {
            // Sanitize Topics result.
            ...
            // Initialize ad request with Topics obtained.
            AdRequest adRequest = AdRequest.initialize(topicsInfo);
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle error.
            ...
        }
});

Para comprender mejor cómo funciona el modelo de clasificación, puedes probar cómo reaccionan los diferentes datos de app en el sistema mediante el Colab del clasificador de Topics de Android.

Obtén acceso a las APIs de Topics

Las plataformas de tecnología publicitaria deben inscribirse para acceder a la API de Topics. Consulta Inscríbete para obtener una cuenta de Privacy Sandbox si quieres obtener más información.

Detalles

  • Una vez en cada ciclo de entrenamiento (p. ej., una vez a la semana), los 5 temas principales del usuario se calculan usando información almacenada en el dispositivo.

    • Cuando se llama a la API de Topics, la plataforma verificará si se asignó un tema a la app que invoca la API. Si no hay ningún tema asignado, se elegirá uno de la siguiente manera y se asignará a esta app durante el resto del ciclo de entrenamiento.
      • Con una probabilidad del 95%, se elige un tema de forma aleatoria de la lista de los 5 temas principales calculados para ese ciclo de entrenamiento.
      • Con un 5% de probabilidad, se elige de forma aleatoria un tema de la taxonomía.
      • Un llamador puede especificar que le gustaría recuperar temas sin modificar el estado llamando a getTopics con el parámetro shouldRecordObservation = false. Esto significa que se pueden mostrar temas, pero la llamada no se incluirá en el cálculo de la época semanal, ni actualizará la lista de temas observados para el llamador.
    • La razón por la que cada app recibe uno de varios temas es para garantizar que las diferentes apps tengan temas distintos y, así, dificultar la correlación cruzada de un mismo usuario.
      • Por ejemplo, la app A podría ver el tema T1 del usuario, pero la app B podría ver el tema T2. Esto hace que sea más difícil para las dos apps determinar que esta información está asociada con el mismo usuario.
  • La API de Topics muestra una lista de hasta 3 temas, 1 de cada uno de los últimos 3 ciclos de entrenamiento.

    • Si proporcionas hasta 3 temas, las apps que se usan con poca frecuencia tendrán suficientes temas para encontrar anuncios relevantes, pero las que se usan con mucha frecuencia aprenderán como máximo 1 tema nuevo por semana.
    • La información del tema que se muestra incluye un ID de tema (int) que corresponde a una entrada en la taxonomía, una versión de taxonomía y una versión de modelo de clasificador.
    • Solo los llamadores que observaron al usuario usan una app asociada con el tema en cuestión dentro los últimos 3 ciclos de entrenamiento pueden recibir el tema.
    • Todos los temas que se muestran representan los intereses del usuario, y puedes seleccionar cualquiera o todos los temas para la personalización de anuncios en tu solicitud de anuncio.
  • Después de que se asigna un tema a la app que invoca la API de Topics, la plataforma determinará si el llamador puede recibir este tema.

    • Solo los llamadores que observaron la participación de los usuarios de una app asociada con el tema en cuestión en los últimos 3 ciclos de entrenamiento pueden recibir el tema.
    • Si el llamador no llamó a la API con anterioridad para ese usuario en una app relacionada con ese tema, el tema no se incluirá en la lista que muestra la API.
    • Si el llamador no recibió ningún tema en los últimos 3 ciclos de entrenamiento, la API de Topics mostrará una lista vacía.

    Por ejemplo, supongamos que el usuario tiene 7 apps instaladas en el dispositivo: A, B, C, D, E, F y G. Supongamos que la clasificación del tema de la app y los SDKs de tecnología publicitaria en estas apps son los siguientes:

    Aplicaciones Clasificación de temas SDK de tecnología publicitaria
    A T1 y T5 ad-sdk1, ad-sdk2
    B T2 ad-sdk2
    C T3 y T6 ad-sdk3, ad-sdk4
    D T1 y T4 ad-sdk1
    E T5 ad-sdk4, ad-sdk5
    F. T6 ad-sdk2, ad-sdk3, ad-sdk4
    G T7 ad-sdk2
    • Final de la semana 1: la API de Topics genera los 5 temas principales del usuario para este ciclo de entrenamiento.
    Tema principal Llamadores que pueden aprender el tema
    T1 ad-sdk1, ad-sdk2
    T2 ad-sdk2
    T3 ad-sdk3, ad-sdk4
    T4 ad-sdk1
    T5 ad-sdk1, ad-sdk2, ad-sdk4, ad-sdk5
    • En la semana 2, si un llamador de cualquier app llama a la API, la lista de temas mostrada solo incluirá temas para los que el llamador esté en la columna "Llamadores que pueden aprender el tema" de un tema y app determinados para ese ciclo de entrenamiento.
    • La ventana del historial incluida en el cálculo de los temas disponibles para cada llamador comprende 3 ciclos de entrenamiento (o 3 semanas).
    • Solo se usan los temas asociados con apps que invocan la API de Topics a través de SDKs de anuncios. Esto significa que si una app no incluye ningún SDK de anuncios que llame a la API de Topics, los temas asociados con esa app no contribuyen al grupo de temas a los que pueden acceder los SDKs de anuncios.
    • Una app también puede inhabilitar declarativamente la API de Topics a través de nuevos elementos de manifiesto y XML para impedir que los SDKs de anuncios usen la API para esa app. Los temas asociados con las apps inhabilitadas no contribuyen al cálculo semanal de temas. Este documento se actualizará para incluir los detalles de implementación relacionados.
  • Si no existe suficiente uso de la app para que la plataforma infiera 5 temas, esta podría, por ejemplo, generar temas restantes de forma aleatoria.

Taxonomía

  • En la propuesta actual, la taxonomía inicial incluirá entre cientos y miles de temas. La propuesta inicial de taxonomía se compartirá en una actualización futura de este documento.
  • Esta taxonomía será curada por seres humanos, por lo que no se incluirán temas sensibles.
  • La taxonomía se adaptará a las categorías de anuncios que se pueden mostrar en las apps para dispositivos móviles en Android.
  • La taxonomía está disponible públicamente y está sujeta a cambios. Las sugerencias se pueden registrar con el botón de comentarios en la parte superior de esta página.

Clasificador de temas

Los temas de interés derivan de un modelo clasificador que se entrena en función de la información pública de la app (como el nombre, la descripción y el nombre del paquete).

  • Cuando se usa el modelo clasificador para la inferencia a fin de indicar los temas para un ciclo de entrenamiento determinado, el conjunto de indicadores utilizados permanece en el dispositivo. Este conjunto de indicadores puede incluir apps instaladas o usadas recientemente y, además, podría expandirse más tarde para incluir otros indicadores.
  • Google entrenará los modelos iniciales, en los que los datos de entrenamiento incluirán etiquetas seleccionadas por seres humanos para obtener información disponible de manera pública sobre la app. El modelo estará disponible sin cargo para que las apps prueben los temas a fin de ver en cuáles clasifican.
  • Los modelos iniciales se entrenarán con información disponible públicamente de las apps de un conjunto limitado de tiendas de aplicaciones, como Google Play Store.
  • Es posible que una app se asigne a más de 1 tema, a ninguno, o bien que no se agregue al historial de temas del usuario. En caso de que una app se asigne a más de 1 tema en la taxonomía, la cantidad de temas elegidos para esta app se limitará a los 3 principales.

Controles de usuario

  • El objetivo del diseño es que los usuarios puedan ver y quitar los temas asociados con su uso de la app. La implementación de esta función de control de usuario es un trabajo en curso y se incluirá en una actualización futura.
  • Si el usuario desinstala una app que contribuyó a la selección de un tema inferido en los últimos 3 ciclos, ese tema no se quitará de la lista de temas mostrados en los últimos 3 ciclos para evitar la divulgación sobre la desinstalación.

Para facilitar la prueba de la experiencia del usuario final, también puedes iniciar un intent en la app para ver la IU de configuración de Topics de manera similar a como lo vería un usuario final. A continuación, se muestra un ejemplo de esa llamada:

//Button that launches settings UI
private Button mSettingsAppButton;
private static final String RB_SETTING_APP_INTENT = "android.adservices.ui.SETTINGS";


//Does setup for button on screen that will launch settings UI to observe Topics
private void registerLaunchSettingsAppButton() {
    mSettingsAppButton.setOnClickListener(
        new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Context context = getApplicationContext();
                Intent activity2Intent = new Intent(RB_SETTING_APP_INTENT);
                activity2Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(activity2Intent);
            }
        });
}

Inscribe una plataforma de tecnología publicitaria

Para acceder a la API de Topics, todas las plataformas de tecnología publicitaria (incluida la de Google) deben completar un proceso de inscripción.

Los desarrolladores de apps pueden administrar qué desarrolladores de tecnología publicitaria pueden acceder a las APIs de Topics incluyendo el ID de inscripción del desarrollador de tecnología publicitaria dentro del manifiesto de la app.

Encriptación de los temas que se muestran

Las plataformas de tecnología publicitaria inscritas que llaman a la API de Topics también deben proporcionar claves de encriptación para garantizar que los temas que se muestran solo sean legibles para el llamador.

Privacy Sandbox recuperará estas claves del extremo proporcionado por la tecnología publicitaria. Como práctica recomendada, sugerimos que las claves se deban actualizar con frecuencia, pero a más tardar cada 6 meses.

Privacy Sandbox solicitará a las tecnologías publicitarias que confirmen la disponibilidad del extremo que proporcionó la plataforma de tecnología publicitaria durante el proceso de inscripción. Para obtener más detalles sobre las acciones requeridas por las AdTech actuales y recién inscritas, consulta la Guía para desarrolladores de inscripción.

Detalles de encriptación

Con la introducción de la encriptación, las llamadas a “GetTopics()” ahora generarán una respuesta con una lista de objetos “EncryptedTopic”. Si desencriptas estos resultados, se generará un objeto con el mismo formato JSON que el objeto Topic anterior.

La API de Topics admite una implementación única de HPKE (encriptación de clave pública híbrida). Esperamos que el llamador inscrito aloje una clave pública de 32 bits en el extremo de URL de encriptación pública proporcionado durante la inscripción. Se espera que estas claves estén codificadas en Base64.

Los objetos EncryptedTopic tienen 3 campos. La lista de temas que se muestran se puede obtener con la clave privada correspondiente a la clave pública.

Para fines de desarrollo, puedes probar la encriptación de la API de Topics si inhabilitas la verificación de inscripción. Esto forzaría a la API a usar la clave pública de prueba para encriptar tus respuestas. Puedes desencriptar los temas encriptados con la clave privada correspondiente.