Esquema para paquetes de metadatos de aplicación

A partir de Android 14, el instalador del paquete de Android puede transferir metadatos sobre una app, como las prácticas de seguridad de los datos, para usarlos en funciones de la plataforma de Android, como la solicitud de permiso de ubicación actualizada.

Existen dos maneras de proporcionar estos metadatos:

  • En el caso de una app precargada en la imagen del sistema, los fabricantes de dispositivos pueden proporcionar metadatos sobre la app agregando un archivo en formato XML a la imagen del sistema con el paquete persistente que se describe a continuación.

  • Para especificar estos metadatos, los instaladores de apps deben pasar un objeto PersistableBundle al método setAppMetadata() en el caso de las apps que se instalan o actualizan.

El paquete persistente de nivel superior consta de los pares clave-valor que se mencionan más abajo. A menos que se especifique lo contrario, cada clave es opcional.

version (obligatorio)
El número de versión del formato de metadatos de la app. Usa 2 como el valor para esta versión actual y long como el tipo. Si cambian las claves o los tipos de contenido de AppMetadata, Android cambiará el número de versión.
safety_labels
Un objeto PersistableBundle que especifica las etiquetas de seguridad de la app.
system_app_safety_label
Un objeto PersistableBundle que especifica la system-app-safety-label de la app. En el caso de las apps que actúan como servicio del sistema, se usa el paquete system_app_safety_label en lugar del paquete safety_labels.
transparency_info
Un objeto PersistableBundle que especifica la información de transparencia de la app.

Formato de las etiquetas de seguridad

El paquete safety_labels contiene los siguientes pares clave-valor:

version (obligatorio)
El número de versión del formato de las etiquetas de seguridad. Usa 1 como el valor para esta versión actual y long como el tipo.
data_labels
Es un objeto PersistableBundle que especifica los datos que recopila y comparte la app.
security_labels
Un objeto PersistableBundle que especifica las prácticas de eliminación y encriptación de datos de la app.
third_party_verification
Un objeto PersistableBundle que especifica cómo un tercero verifica las prácticas de seguridad de los datos de la app.

Datos recopilados y compartidos

El paquete data_labels contiene los siguientes pares clave-valor:

data_collected
Un objeto PersistableBundle que especifica los tipos de datos que recopila la app.
data_shared
Un objeto PersistableBundle que especifica los tipos de datos que comparte la app.

Categorías de datos

Las claves data_collected y data_shared usan el formato de paquete data_category, que contiene los pares clave-valor que se muestran en la siguiente lista. Cada clave se asigna a un objeto PersistableBundle que especifica los tipos de datos para una categoría en particular.

  • personal
  • financial
  • location
  • email_text_message
  • photo_video
  • audio
  • storage
  • health_fitness
  • contacts
  • calendar
  • identifiers
  • app_performance
  • actions_in_app
  • search_and_browsing

Tipos de datos

Cada clave en el paquete data_category se asigna a un paquete diferente que usa el formato data_type. Las claves que especificas en el formato data_type dependen de lo que elijas para un objeto data_category.

Los pares clave-valor data_type posibles aparecen en las listas que se mencionan más abajo. El valor de cada una de estas claves es un objeto PersistableBundle que describe las prácticas de uso de datos de la app para ese tipo en particular. Algunos tipos de datos usan solo una clave.

Personal

  • name
  • email_address
  • physical_address
  • phone_number
  • race_ethnicity
  • political_or_religious_beliefs
  • sexual_orientation_or_gender_identity
  • personal_identifiers
  • other

Finanzas.

  • card_bank_account
  • purchase_history
  • credit_score
  • other

Ubicación

  • approx_location
  • precise_location

Correos electrónicos y mensajes de texto

  • emails
  • text_messages
  • other

Fotos y videos

  • photos
  • videos

Audio

  • sound_recordings
  • music_files
  • other

Almacenamiento

files_docs

Salud y entrenamiento físico

  • health
  • fitness

Contactos

contacts

Calendario

calendar

Identificadores

other

Rendimiento de la app

  • crash_logs
  • performance_diagnostics
  • other

Acciones en la app

  • user_interaction
  • in_app_search_history
  • installed_apps
  • user_generated_content
  • other

Búsqueda y navegación

web_browsing_history

Uso de datos

El paquete data_usage contiene los siguientes pares clave-valor:

purposes(obligatorio)

Un array de números enteros que representa razones específicas para recopilar o compartir datos y usa el método PersistableBundle putIntArray. Para cada paquete, se requiere al menos uno de los fines que se definen a continuación.

  • 1: PURPOSE_APP_FUNCTIONALITY
  • 2: PURPOSE_ANALYTICS
  • 3: PURPOSE_DEVELOPER_COMMUNICATIONS
  • 4: PURPOSE_FRAUD_PREVENTION_SECURITY
  • 5: PURPOSE_ADVERTISING
  • 6: PURPOSE_PERSONALIZATION
  • 7: PURPOSE_ACCOUNT_MANAGEMENT
is_collection_optional

Valor booleano. Especifica si los usuarios pueden habilitar o inhabilitar la recopilación de datos.

Nota: Establece este valor solo para paquetes data_category que representen la recopilación de datos; no lo configures para el uso compartido de datos.

ephemeral

Valor booleano. Especifica si la app procesa los datos del servidor solo en la memoria, no en el disco, y que retiene los datos no más del tiempo necesario para atender la solicitud de procesamiento de datos específica.

Nota: Establece este valor solo para paquetes data_category que representen la recopilación de datos; no lo configures para el uso compartido de datos.

Prácticas de encriptación y eliminación de datos

El paquete security_labels contiene pares clave-valor que representan las prácticas de encriptación y eliminación de datos de la app:

is_data_deletable
Valor booleano. Especifica si la app permite o no que el usuario la solicite para borrar sus datos.
is_data_encrypted
Valor booleano. Especifica si todos los datos del usuario que recopila la app se encriptan en tránsito.

Verificación de terceros

El paquete third_party_verification consta de una sola clave: url. Esta URL, representada como un valor de cadena, especifica el sitio web de terceros que se utiliza para verificar la información de seguridad de los datos de la app.

Formato de las etiquetas de seguridad del servicio del sistema

En el caso de las apps que actúan como servicio del sistema, se usa el paquete system_app_safety_label en lugar del paquete safety_labels y contiene los siguientes pares clave-valor:

url (obligatorio)

  • Es la URL que dirige a una página que contiene información de seguridad de la app que actúa como servicio del sistema.
  • Usa string como el tipo.
  • Si no se proporcionó, se debe usar la URL de la política de privacidad como resguardo.
  • Nota: Google Play Store usa privacy_policy como resguardo.

Formato de información de transparencia

El paquete transparency_info contiene los siguientes pares clave-valor:

developer_info
Es un objeto PersistableBundle que especifica información sobre el desarrollador de apps.
app_info
Un objeto PersistableBundle que especifica información de la app.

Información para desarrolladores

El paquete developer_info contiene los siguientes pares clave-valor:

developer_#
Un objeto PersistableBundle que identifica al desarrollador. El developer_info contiene uno o más developer_#, en los que # es un número entero. Por ejemplo, developer_0, developer_1, developer_2, etcétera.

Desarrollador

El paquete developer_# contiene los siguientes pares clave-valor:

name (obligatorio)
Es una cadena que establece el nombre del desarrollador.
email (obligatorio)
Es una cadena que establece la dirección de correo electrónico del desarrollador.
address (obligatorio)
Es una cadena que establece la dirección de correo postal del desarrollador.
country_region (obligatorio)
Es una cadena que establece el país o la región del desarrollador.
website
Es una cadena que establece el sitio web del desarrollador.

app_registry

  • Es una cadena que establece la tienda o el registro del desarrollador.
  • Si el desarrollador también está registrado en una tienda o en otro registro, el valor debe ser el nombre del paquete de Android de la tienda o la URL del registro.
  • Se permiten varias entradas para varias tiendas.
  • Para Google Play, usa com.android.vending.
  • Si el desarrollador es un SDK que aparece en el Índice SDK de Google Play, omite este atributo.
  • Si un desarrollador no está registrado en ninguna tienda de aplicaciones ni registro, omite este atributo.

app_registry_id

  • Es una cadena que establece el ID del desarrollador del app_registry indicado.
  • Si el desarrollador también está registrado en una tienda o en otro registro, el valor debe ser su identidad de registro o tienda.
  • Se permiten varias entradas para varias tiendas.
  • Para los desarrolladores registrados en Google Play, este valor debe ser la URL de la página del desarrollador (por ejemplo, https://play.google.com/store/apps/dev?id=5700313618786177705 es la URL del desarrollador de Google LLC).
  • Si el desarrollador es un desarrollador de SDK que aparece en el Índice SDK de Google Play, usa la URL del Índice SDK de Google Play del SDK (por ejemplo, https://play.google.com/sdks/details/com-google-android-gms-play-services-ads es la URL del Índice SDK de Google Play del SDK de anuncios de Google para dispositivos móviles (GMA).
  • Si el desarrollador está registrado en otra tienda o registro, se puede proporcionar una URL de la tienda de aplicaciones o algún otro identificador.
  • Si un desarrollador no está registrado en ninguna tienda de aplicaciones, se puede omitir este atributo.

Información de apps

El paquete app_info contiene los siguientes pares clave-valor:

title (obligatorio)
Es una cadena que establece el título de la app.
description (obligatorio)
Es una cadena que indica el propósito de la app en un BLOB de texto legible en inglés.
contains_ads (obligatorio)
Valor booleano que declara si la app muestra anuncios.

privacy_policy (obligatorio)

  • Es una cadena que contiene un atributo de URL que vincula a la política de privacidad y que detalla cómo se manejan los datos del usuario.
  • Obligatorio para las apps que transmiten datos del usuario.
  • Si la app no contiene este vínculo, se supone que no controla los datos del usuario.
category (obligatorio)

Es una cadena que contiene una de las siguientes categorías de app que describe mejor el objetivo principal de la app:

  • Android (solo para un componente de AOSP)*
  • Arte y diseño
  • Autos y vehículos
  • Belleza
  • Libros y referencias
  • Empresas
  • Cómics
  • Comunicaciones
  • Citas
  • Educación
  • Entretenimiento
  • Eventos
  • Finanzas
  • Comidas y bebidas
  • Juego
  • Estado físico y salud
  • Casa y hogar
  • Instalador (solo para una tienda de aplicaciones o algún otro instalador)*
  • Bibliotecas y demostración
  • Estilo de vida
  • Mapas y navegación
  • Medicina
  • Música y audio
  • Noticias y revistas
  • Crianza
  • Personalización
  • Fotografía
  • Productividad
  • Seguridad*
  • Compras
  • Social
  • Deportes
  • Herramientas
  • Viajes y servicios locales
  • Actualizador (solo para la app de actualización inalámbrica (OTA) predeterminada de un dispositivo)*
  • Reproductores y editores de video
  • Clima
contact_info
Es un objeto PersistableBundle que incluye información de contacto de la app (a continuación).

Información de contacto

El paquete contact_info contiene los siguientes pares clave-valor:

email (obligatorio)
Es una cadena que establece la dirección de correo electrónico de la app.
website
Es una cadena que establece el sitio web de la app.