Una lista de declaraciones es un archivo o fragmento codificados en JSON en una ubicación conocida.
Ubicación de la lista de instrucciones
Consulta Cómo crear una lista de instrucciones para obtener información sobre dónde se debe almacenar esta lista.
Sintaxis
La lista o el fragmento de instrucciones consisten en un array JSON de una o más instrucciones de sitios web o aplicaciones como objetos JSON. Estas instrucciones pueden estar en cualquier orden. Esta es la sintaxis general:
[ { "relation": ["relation_string "], "target": {target_object } } , ... ]
- relación
- Es un array de una o más cadenas que describen la relación que se declara sobre el objetivo. Consulta la lista de cadenas de relación definidas. Ejemplo:
delegate_permission/common.handle_all_urls
- objetivo
- El recurso de destino al que se aplica esta sentencia. Tipos de destinos disponibles:
-
Objetivo del sitio web "target": { "namespace": "web", "site": "
site_root_url " }- espacio de nombres
- Debe ser
web
para los sitios web. - sitio
- El URI del sitio objetivo de la sentencia, en el formato
http[s]://<hostname>[:<port>]
, en el que <hostname> está completamente calificado y <port> debe omitirse cuando se usa el puerto 80 para HTTP o el puerto 443 para HTTPS. Un destino de sitio web solo puede ser un dominio raíz. No puedes limitarlo a un subdirectorio específico. Todos los directorios de esta raíz coincidirán. No se debe considerar que los subdominios coinciden, es decir, si el archivo de declaración se aloja en www.example.com, no se debe considerar que www.puppies.example.com es una coincidencia. Para ver las reglas y ejemplos sobre la coincidencia de objetivos del sitio web, consulta la documentación de objetivos. Ejemplo:http://www.example.com
-
Orientación por app para Android "target": { "namespace": "android_app", "package_name": "
fully_qualified_package_name ", "sha256_cert_fingerprints": ["cert_fingerprint "] }- espacio de nombres
- Debe ser
android_app
para las apps para Android. - package_name
- Es el nombre completo del paquete de la app al que se aplica esta declaración. Ejemplo:
com.google.android.apps.maps
- sha256_cert_fingerprints
- La huella digital SHA265 en mayúscula del certificado de la app a la que
se aplica esta instrucción. Puedes calcular esto con
openssl
o Javakeytool
, como se muestra a continuación:openssl x509 -in $CERTFILE -noout -fingerprint -sha256
keytool -printcert -file $CERTFILE | grep SHA256
["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
.Si usas la firma de apps de Play para tu app, por lo general, la huella digital del certificado que produce la ejecución de
keytool
oopenssl
de forma local no coincide con la de los dispositivos de los usuarios. Puedes verificar si usas la firma de apps de Play en tu cuenta de desarrollador de Play Console en Release > Setup > App Integrity. Si es así, también encontrarás el fragmento JSON de Vínculos de recursos digitales correcto para tu app en la misma página.
-
Ejemplo de lista de declaraciones
A continuación, se incluye un ejemplo de una lista de declaraciones de sitios web que contiene declaraciones sobre sitios web y apps: http://example.digitalassetlinks.org/.well-known/assetlinks.json
Escalamiento a decenas de instrucciones o más
En algunos casos, un director podría querer hacer muchas declaraciones diferentes sobre diferentes objetivos, o tal vez sea necesario emitir declaraciones desde diferentes principales al mismo conjunto de objetivos. Por ejemplo, un sitio web puede estar disponible en muchos dominios de nivel superior diferentes por país, y es posible que todos ellos deseen hacer una declaración sobre la misma aplicación para dispositivos móviles.
En estas situaciones, incluir sentencias puede ser útil. Con este mecanismo, puedes configurar punteros de muchos principales diferentes a una ubicación central, que define instrucciones para todos los principales.
Por ejemplo, puedes decidir que la ubicación central debería ser `https://example.com/includedstatements.json`. Este archivo se puede configurado para incluir el mismo contenido que en los ejemplos anteriores.
Para configurar un puntero de un sitio web al archivo de inclusión, haz lo siguiente: cambia "https://example.com/.well-known/assetlinks.json" por:
[{ "include": "https://example.com/includedstatements.json" }]
Para configurar un puntero de una app para Android al archivo de inclusión, cambia "res/values/strings.xml" a lo siguiente:
<resources> ... <string name="asset_statements"> [{ \"include\": \"https://example.com/includedstatements.json\" }] </string> </resources>
Más información
En nuestro documento de especificaciones, encontrarás una explicación más detallada del formato de la lista de instrucciones y los conceptos subyacentes.