Vamos começar

Visão geral

Com o protocolo e a API do Digital Asset Links, um app ou site pode fazer declarações públicas sobre outros apps ou sites. Por exemplo, um site pode declarar que está associado a um app Android específico ou que quer compartilhar credenciais de usuário com outro site.

Veja alguns usos possíveis para os links de recursos digitais:

  • O site A declara que os links para o site precisam abrir em um app designado em dispositivos móveis, caso o app esteja instalado.
  • O site A declara que pode compartilhar as credenciais de usuário do Chrome com o site B para que o usuário não precise fazer login no site B se tiver feito login no site A.
  • O app A declara que pode compartilhar configurações do dispositivo, como a localização, com o site B.

Termos-chave

  • Principal: o principal é o app ou site que faz a declaração. No Digital Asset Links, o principal é sempre o app ou site que hospeda a lista de instruções.
  • Lista de instruções: os extratos estão contidos em uma lista de instruções com um ou mais extratos. Uma lista de instruções é de texto não criptografado e acessível publicamente, em um local controlado pelo principal e difícil de falsificar ou adulterar. Pode ser um arquivo independente ou uma seção de outro item maior. Por exemplo, em um site, é um arquivo inteiro. Em um app Android, é uma seção no manifesto do app. As declarações podem ser visualizadas e verificadas por qualquer pessoa, usando métodos não proprietários. Consulte a documentação da lista de instruções para mais informações.
  • Instrução: uma instrução é uma estrutura JSON altamente estruturada que consiste em uma relação (o que a instrução diz, por exemplo: "Ativar credenciais de compartilhamento") e um destino (o site ou app a que a relação se aplica). Portanto, cada instrução é como uma frase, em que principal diz relação sobre destino.
  • Consumidor de extrato:um consumidor de instrução solicita uma lista de instruções de um principal, verifica a presença de uma instrução em relação a um determinado principal e, se existir, pode executar a ação especificada. Veja a declaração que contém a documentação para mais informações.

Exemplo de uso rápido

Veja um exemplo muito simplificado de como o site www.example.com pode usar os links de recursos digitais para especificar que qualquer link para URLs desse site precisa ser aberto em um app designado em vez do navegador:

  1. O site www.example.com publica uma lista de instruções em https://www.example.com/.well-known/assetlinks.json. Esse é o nome e local oficiais de uma lista de instruções em um site. Listas de instruções em qualquer outro local ou com qualquer outro nome não são válidas para esse site. Em nosso exemplo, a lista de instruções consiste em uma instrução, concedendo ao app Android a permissão para abrir links no site:
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    Uma lista de instruções é compatível com uma matriz de instruções dentro das marcas [ ], mas nosso arquivo de exemplo contém apenas uma instrução. sha256_cert_fingerprints é as impressões digitais SHA256 do certificado de assinatura do app. Veja mais detalhes na documentação dos Links do app Android.
  2. O app Android listado na instrução acima tem um filtro de intent que especifica o esquema, o host e o padrão de caminho dos URLs que ele quer processar: nesse caso, https://www.example.com. O filtro de intent inclui um atributo especial android:autoVerify, novo no Android M, que indica que o Android precisa verificar a instrução no site descrito no filtro de intent quando o app é instalado.
  3. Um usuário instala o app. O Android vê o filtro de intent com o atributo autoVerify e verifica a presença da lista de instruções no site especificado. Se presente, o Android verifica se esse arquivo inclui uma instrução que concede processamento de links para o app e compara o app com a instrução por hash de certificado. Se tudo funcionar, o Android encaminha todas as intents https://www.example.com para o app example.com.
  4. O usuário clica em um link para https://www.example.com/puppies no dispositivo. Esse link pode estar em qualquer lugar: em um navegador, em uma sugestão do Google Search Appliance ou em qualquer outro lugar. O Android encaminha a intent para o app example.com.
  5. O app example.com recebe a intent e decide processá-la, abrindo a página "Cachorros" do app. Se, por algum motivo, o app tiver recusado o processamento do link ou se o app não estiver no dispositivo, o link teria sido enviado para o próximo gerenciador de intent padrão correspondente a esse padrão de intent (geralmente o navegador).

Considerações e limitações importantes:

  • O protocolo não autentica o principal que faz a instrução, mas está localizado em um local específico fortemente associado ao principal e sob controle dele.
  • O protocolo não autentica o destino da instrução, mas fornece um meio para o autor da chamada autenticar o destino. Por exemplo, uma instrução identifica os destinos de aplicativo para dispositivos móveis por hash de certificado e nome de pacote.
  • O protocolo não executa nativamente nenhuma ação de instrução, mas permite a capacidade de expor instruções, que um aplicativo consumidor precisa validar e decidir se quer tomar as medidas necessárias. O Android M executa essas etapas de forma nativa. Por exemplo, se um site delegar o gerenciamento de links a um app específico, o Android verificará a instrução, o app de destino e, em seguida, oferecerá ao app a opção de processar o link fornecido.
  • O protocolo não permite fazer declarações sobre dois terceiros: o site A pode fazer uma declaração sobre o site B, mas o site A não pode fazer uma declaração sobre o relacionamento do site B com o site C. No entanto, se o site B confiar no site A, ele poderá consultar o site A em busca de uma declaração que conceda permissão ao site C e decidir implementá-la.

Próximas etapas

  1. Veja se há documentação explícita do seu caso de uso.
  2. Saiba como criar um extrato.