Comenzar

Descripción general

El protocolo y la API de Vínculos de recursos digitales permiten que una app o un sitio web hagan declaraciones públicas verificables sobre otras apps o sitios web. Por ejemplo, un sitio web puede declarar que está asociado con una app para Android específica o declarar que desea compartir las credenciales de usuario con otro sitio web.

Estos son algunos de los usos posibles de los vínculos de recursos digitales:

  • El sitio web A declara que los vínculos a su sitio deberían abrirse en una app designada en dispositivos móviles, si la app está instalada.
  • El sitio web A declara que puede compartir sus credenciales de usuario de Chrome con el sitio web B para que el usuario no tenga que acceder al sitio web B si accedió al sitio web A.
  • La app A declara que puede compartir la configuración del dispositivo, como la ubicación, con el sitio web B.

Términos clave

  • Principal: La principal es la app o el sitio web que hace la declaración. En Vínculos de recursos digitales, la principal siempre es la app o el sitio web que aloja la lista de instrucciones.
  • Lista de declaraciones: Las declaraciones se encuentran en una lista de declaraciones que contiene una o más declaraciones. Una lista de instrucciones es de texto simple y tiene acceso público, en una ubicación que es controlada por la principal y que es difícil de falsificar o manipular. Puede ser un archivo independiente o una sección de otro elemento más grande. Por ejemplo, en un sitio web, es un archivo completo. En una app para Android, es una sección en el manifiesto de la app. Las declaraciones pueden ser vistas y verificadas por cualquier persona mediante métodos no propiedad. Para obtener más información, consulta la documentación de la lista de instrucciones.
  • Declaración: Una declaración es una construcción JSON bien estructurada que consiste en una relación (lo que dice la acción para hacer, por ejemplo: Habilitar el uso compartido de credenciales) y un objetivo (el sitio web o la app a la que se aplica la relación). Por lo tanto, cada instrucción es como una oración, en la que principal dice relación sobre objetivo.
  • Consumidor de declaraciones: Un consumidor de instrucciones solicita una lista de instrucciones a una principal, verifica la presencia de una declaración en contra de una principal determinada y, si existe, puede realizar la acción especificada. Para obtener más información, consulte la documentación que resume la documentación.

Ejemplo de uso rápido

A continuación, se muestra un ejemplo muy simplificado de cómo el sitio web www.example.com podría usar vínculos de recursos digitales para especificar que cualquier vínculo a las URL de ese sitio debería abrirse en una app designada y no en el navegador:

  1. El sitio web www.example.com publica una lista de instrucciones en https://www.example.com/.well-known/assetlinks.json. Este es el nombre y la ubicación oficiales de una lista de declaraciones en un sitio; las listas de declaraciones en cualquier otra ubicación o con cualquier otro nombre no son válidas para este sitio. En nuestro ejemplo, la lista de instrucciones consiste en una declaración que otorga a su app para Android el permiso para abrir vínculos en su sitio:
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    Una lista de instrucciones admite un arreglo de declaraciones dentro de las marcas [ ], pero nuestro archivo de ejemplo contiene solo una declaración. sha256_cert_fingerprints es la huella digital SHA256 del certificado de firma de tu app. Obtén más detalles en la documentación sobre Android App Links.
  2. La app para Android que se menciona en la instrucción anterior tiene un filtro de intents que especifica el esquema, el host y el patrón de ruta de acceso de las URL que quiere manejar: en este caso, https://www.example.com. El filtro de intents incluye un atributo especial android:autoVerify, nuevo para Android M, que indica que Android debe verificar la declaración en el sitio web que se describe en el filtro de intents cuando se instala la app.
  3. Un usuario instala la app. Android ve el filtro de intents con el atributo autoVerify y comprueba la presencia de la lista de declaraciones en el sitio especificado. Si está presente, Android verifica si ese archivo incluye una declaración que otorga el manejo de vínculos a la app y la verifica con la declaración mediante el hash del certificado. Si todo sale bien, Android reenviará todos los intents https://www.example.com a la app de example.com.
  4. El usuario hace clic en un vínculo a https://www.example.com/cachorros en su dispositivo. Este vínculo puede estar en cualquier lugar: en un navegador, en una sugerencia de Google Search Appliance o en cualquier otro lugar. Android reenvía el intent a la app example.com.
  5. La app example.com recibe el intent y decide manejarlo. Para ello, abre la página de cachorros. Si, por algún motivo, se hubiera rechazado el control de la app o este no hubiera estado en el dispositivo, se habría enviado el vínculo al siguiente controlador de intents predeterminado que coincida con ese patrón de intent (a menudo, el navegador).

Consideraciones y limitaciones importantes:

  • El protocolo no autentica al principal que hace la declaración, pero se encuentra en una ubicación específica asociada con el principal y bajo el control del principal.
  • El protocolo no autentica el destino de la instrucción, pero proporciona un medio para que el emisor autentique el objetivo (por ejemplo, una instrucción identifica objetivos de la app para dispositivos móviles según el hash del certificado y el nombre del paquete).
  • El protocolo no realiza ninguna acción de instrucción de forma nativa; más bien, permite exponer las declaraciones, que una aplicación de consumo debe validar y, luego, decidir si debe realizar acciones y cómo. Android M realiza estos pasos de forma nativa; por ejemplo, si un sitio web delega el manejo de vínculos a una app específica, Android verifica y verifica la instrucción, verifica la app de destino y, luego, ofrece la app para controlar el vínculo determinado.
  • El protocolo no permite hacer declaraciones sobre dos terceros, es decir, el sitio web A puede hacer una declaración sobre el sitio web B, pero el sitio web A no puede hacer una declaración sobre la relación del sitio web B con el sitio web C. Sin embargo, si el sitio web B confía en el sitio web A, puede verificar que el sitio web A tenga una declaración que otorgue permiso al sitio web C y decidir implementarlo.

Próximos pasos

  1. Consulta si hay documentación explícita para tu caso práctico.
  2. Obtén información sobre cómo crear una declaración.