Solicita indicadores de edad

En este documento, se describe cómo solicitar indicadores de edad con la API de Play Age Signals.

El SDK de Play Age Signals 0.0.4 presenta una arquitectura de dos funciones diseñada para simplificar las solicitudes de indicadores de edad y admitir nuestro modelo basado en la elección del usuario. Para solicitar indicadores de edad, usa este flujo de trabajo de alto nivel:

Llama al método requestAgeSignalsAccess(Activity), que devuelve ageSignalsStatus. El valor de ageSignalsStatus puede ser SHARED, NOT_SHARED o VERIFICATION_REQUIRED.

  • Si es ageSignalsStatus == NOT_SHARED: Tu app no recibirá indicadores de edad en la respuesta de la API.
  • Si es ageSignalsStatus == SHARED, llama al método checkAgeSignals(). Si el usuario o su madre o padre decidieron compartir los indicadores de edad, recibirás estos indicadores como parte de la respuesta de la API y podrás decidir cómo controlar la respuesta.
  • Si es ageSignalsStatus == VERIFICATION_REQUIRED: Se desconoce la edad del usuario y este se encuentra en una jurisdicción o región aplicable en la que la verificación de edad y el uso compartido de indicadores de edad son obligatorios. Para obtener un indicador de edad de Google Play en estas regiones, pídele al usuario que visite Play Store para resolver su estado.

El método requestAgeSignalsAccess(Activity) devuelve valores diferentes según si la divulgación obligatoria de la edad se aplica en una región:

  • En el caso de los usuarios que cumplen con los requisitos en los estados de EE.UU. con leyes que exigen que las tiendas de aplicaciones proporcionen información de edad verificada a los desarrolladores, no se activa el mensaje integrado en la app. En su lugar, se les pedirá a los usuarios que verifiquen o configuren la supervisión cuando visiten la app de Play Store. Usa el valor de ageSignalsStatus para determinar el estado de verificación:
  • Para los usuarios de otras regiones en las que el uso compartido de la edad se basa en la elección del usuario o de su madre o padre, se aplica lo siguiente:
    • Si el parámetro de configuración del usuario es Preguntar antes de compartir, se muestra el mensaje en la app. Si el usuario acepta compartir su edad, el valor de ageSignalsStatus es SHARED; de lo contrario, es NOT_SHARED.
    • Si el parámetro de configuración del usuario es Siempre compartir, no se muestra el mensaje integrado en la app y el valor de ageSignalsStatus es SHARED.
    • Si el parámetro de configuración del usuario es Nunca compartir, no se muestra el mensaje en la app y el valor de ageSignalsStatus es NOT_SHARED.
    • En el caso de los usuarios supervisados, las madres o los padres pueden optar por compartir la edad de sus hijos o hijas en la configuración de la app de Family Link. Si los padres deciden compartir la edad, el valor de ageSignalsStatus será SHARED; de lo contrario, será NOT_SHARED.

En la siguiente imagen, se muestra la configuración del rango de edad de Preguntar antes de compartir en la configuración de Play.

Menú de configuración de Google Play en el que se muestran las opciones para compartir la edad: Preguntar antes de compartir, Compartir siempre y Nunca compartir
Figura 1: Administra el uso compartido de la edad en la configuración de Play.

En la siguiente imagen, se muestra la solicitud de uso compartido del rango de edad en la app que se muestra a los usuarios cuando se solicita la edad a través de la API y su parámetro de configuración es Preguntar antes de compartir.

Cuadro de diálogo de consentimiento en la app que le solicita al usuario que comparta su rango de edad con la app.
Figura 2: Solicitud de divulgación del rango de edad en la app.

En la siguiente imagen, se muestra cómo el usuario puede habilitar o inhabilitar el uso compartido de la edad para una app específica.

Diálogo de configuración de una app específica que muestra un interruptor para habilitar o inhabilitar el uso compartido del rango de edad
Figura 3: Habilita o inhabilita el uso compartido de la edad para una app específica.

En el siguiente ejemplo, se muestra cómo solicitar indicadores de edad:

Kotlin

// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
val ageSignalsManager = AgeSignalsManagerFactory.create(applicationContext)

// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
val accessRequest = AgeSignalsAccessRequest.builder()
    .setActivity(this)
    .build()

ageSignalsManager.requestAgeSignalsAccess(accessRequest)
    .addOnSuccessListener { accessResult ->
        if (accessResult.ageSignalsStatus() == AgeSignalsStatus.SHARED) {
            // The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
            // Retrieve the actual age signals.
            retrieveAgeSignals(ageSignalsManager)
        } else {
            // Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
        }
    }
    .addOnFailureListener { exception ->
        // Handle API/Play Store connection and system errors
        handleAgeSignalsError(exception)
    }

private fun retrieveAgeSignals(manager: AgeSignalsManager) {
    // 3. Perform the actual age signals query once sharing is active.
    manager.checkAgeSignals(AgeSignalsRequest.builder().build())
        .addOnSuccessListener { ageSignalsResult ->
            val installId = ageSignalsResult.installId()
            val ageLower = ageSignalsResult.ageLower()
            val ageUpper = ageSignalsResult.ageUpper()
            val significantChangeDate = ageSignalsResult.significantChangeApprovalDate()
            val ageRangeSource = ageSignalsResult.ageRangeSource()

            if (ageLower != null) {
                if (ageUpper != null) {
                    // The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
                } else {
                    // The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
                }
            } else {
                // Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
            }
        }
        .addOnFailureListener { exception ->
            handleAgeSignalsError(exception)
        }
}

Java

// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(getApplicationContext());

// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
AgeSignalsAccessRequest accessRequest = AgeSignalsAccessRequest.builder()
    .setActivity(this)
    .build();

ageSignalsManager.requestAgeSignalsAccess(accessRequest)
    .addOnSuccessListener(accessResult -> {
        Integer status = accessResult.ageSignalsStatus();
        if (status == AgeSignalsStatus.SHARED) {
            // The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
            // Retrieve the actual age signals.
            retrieveAgeSignals(ageSignalsManager);
        } else {
            // Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
        }
    })
    .addOnFailureListener(exception -> {
        // Handle API/Play Store connection and system errors
    });

private void retrieveAgeSignals(AgeSignalsManager manager) {
    // 3. Perform the actual age signals query once sharing is active.
    manager.checkAgeSignals(AgeSignalsRequest.builder().build())
        .addOnSuccessListener(ageSignalsResult -> {
            String installId = ageSignalsResult.installId();
            Integer ageLower = ageSignalsResult.ageLower();
            Integer ageUpper = ageSignalsResult.ageUpper();
            Date significantChangeDate = ageSignalsResult.significantChangeApprovalDate();
            @AgeRangeSource Integer ageRangeSource = ageSignalsResult.ageRangeSource();

            if (ageLower != null) {
                if (ageUpper != null) {
                    // The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
                } else {
                    // The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
                }
            } else {
                // Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
            }
        })
        .addOnFailureListener(exception -> {
            handleAgeSignalsError(exception);
        });
}

Puntos clave sobre el código

  • El método requestAgeSignalsAccess(Activity) realiza una verificación de bloqueo de los indicadores de edad actuales del usuario y el estado de uso compartido de los indicadores de edad.
  • Después de llamar a requestAgeSignalsAccess(Activity), Play muestra un mensaje integrado en la app solo para los usuarios no supervisados. Las madres y los padres de usuarios supervisados pueden compartir la edad de sus hijos o hijas administrando la configuración de uso compartido de la edad en la app de Family Link.
  • Si el usuario descarta o rechaza el uso compartido de la edad, se mostrará el mensaje en la app varias veces antes de que se deje de mostrar.
  • El método checkAgeSignals() obtiene el valor de los indicadores de edad en la respuesta de la API. Este método devuelve ageRangeSource, ageUpper, ageLower y otros valores de cambio significativos.