Sintaxis de la lista de instrucciones

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:
  • "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
  • "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 Java keytool, como se muestra a continuación:
    • openssl x509 -in $CERTFILE -noout -fingerprint -sha256
    • keytool -printcert -file $CERTFILE | grep SHA256
    Ejemplo: ["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 o openssl 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.