Como começar

Visão geral

O protocolo e a API Digital Asset Links permitem que um app ou site faça declarações públicas e verificáveis 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.

Confira alguns usos possíveis para os Digital Asset Links:

  • O site A declara que os links para ele devem abrir em um app designado em dispositivos móveis, se o app estiver 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 já tiver feito login no site A.
  • O app A declara que pode compartilhar configurações do dispositivo, como local, com o site B.

Termos-chave

  • Principal:o principal é o app ou site que faz a declaração. Nos Links de recursos digitais, o principal é sempre o app ou site que hospeda a lista de declarações.
  • Lista de instruções: as instruções estão contidas em uma lista de instruções que contém uma ou mais instruções. Uma lista de declarações é de texto simples 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.
  • Declaração : uma declaração é um constructo JSON bem estruturado que consiste em uma relação (o que a declaração diz para fazer, por exemplo: "Ativar o compartilhamento de credenciais") 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 alvo.
  • Consumidor de declaração:solicita uma lista de declarações de um principal, verifica a presença de uma declaração em relação a um determinado principal e, se ela existir, pode realizar a ação especificada. Consulte a documentação sobre o uso de extratos para mais informações.

Exemplo de uso rápido

Este é um exemplo muito simplificado de como o site www.example.com pode usar os Links de recursos digitais para especificar que todos os links para URLs nesse site devem ser abertos em um app designado em vez do navegador:

  1. O site www.example.com publica uma lista de declarações em https://www.example.com/.well-known/assetlinks.json. Esse é o nome e o local oficiais de uma lista de declarações em um site. As listas de declarações em qualquer outro local ou com qualquer outro nome não são válidas para esse site. No nosso exemplo, a lista de declarações consiste em uma declaraçã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 aceita uma matriz de instruções entre os colchetes [ ], mas o arquivo de exemplo contém apenas uma instrução. sha256_cert_fingerprints são as impressões digitais SHA256 do certificado de assinatura do app. Confira mais detalhes na documentação sobre links de apps Android.
  2. O app Android listado na declaraçã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: neste caso, https://www.example.com. O filtro de intent inclui um atributo especial android:autoVerify, novo no Android M, que indica que o Android deve verificar a declaraçã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 declarações no site especificado. Se estiver presente, o Android verifica se esse arquivo inclui uma declaração que concede o processamento de links ao app e verifica o app em relação à declaração por hash de certificado. Se tudo estiver certo, o Android vai encaminhar todos os 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 o intent para o app example.com.
  5. O app example.com recebe a intent e escolhe processá-la, abrindo a página de cachorrinhos no app. Se, por algum motivo, o app tivesse recusado processar o link ou se ele não estivesse no dispositivo, o link teria sido enviado para o próximo processador de intents 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 declaração, mas ela está localizada em um local específico fortemente associado ao principal e sob o controle dele.
  • O protocolo não autentica o destino da declaração, mas oferece um meio para o chamador autenticar o destino. Por exemplo, uma declaração identifica destinos de apps para dispositivos móveis por hash de certificado e nome do pacote.
  • O protocolo não executa ações de declaração de forma nativa. Em vez disso, ele permite expor declarações, que um aplicativo consumidor precisa validar e decidir se e como agir. O Android M realiza essas etapas de forma nativa. Por exemplo, se um site delega o processamento de links a um app específico, o Android verifica e confirma a declaração, verifica o app de destino e oferece a opção de processar o link.
  • O protocolo não permite fazer declarações sobre dois terceiros. Ou seja, o site A pode fazer uma declaração sobre o site B, mas não sobre a relação do site B com o site C. No entanto, se o site B confiar no site A, ele poderá verificar o site A para encontrar uma declaração que conceda permissão ao site C e decidir implementar isso.

Próximas etapas

  1. Confira se há documentação explícita para seu caso de uso.
  2. Saiba como criar uma declaração.