Sintaxe da lista de instruções

Uma lista de declarações é um arquivo ou snippet codificado em JSON em um local conhecido.

Local da lista de instruções

Consulte Criar uma lista de instruções para saber onde ela deve ser armazenada.

Sintaxe

A lista ou o snippet de declarações consiste em uma matriz JSON de uma ou mais declarações de sites ou apps como objetos JSON. Essas declarações podem estar em qualquer ordem. Esta é a sintaxe geral:

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
relation
Uma matriz de uma ou mais strings que descrevem a relação que está sendo declarada sobre o valor desejado. Consulte a lista de strings de relação definidas. Exemplo: delegate_permission/common.handle_all_urls
target
O recurso de destino a que esta declaração se aplica. Tipos de destino disponíveis:
relation_extensions (opcional)

Você pode adicionar um campo relation_extensions opcional a uma declaração para fornecer mais informações sobre as permissões e associações que quer conceder. Esse campo precisa ser um objeto em que cada chave é uma string de relação, e o valor é um objeto que contém as extensões dessa relação. Os clientes que solicitam essas declarações precisam ser atualizados para respeitar esses campos.

Por exemplo, relation_extensions para a relação delegate_permission/common.handle_all_urls pode ter esta aparência:

  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": ["..."]
    },
    "relation_extensions": {
      "delegate_permission/common.handle_all_urls": {...}
    }
  }
  

A API DAL permite retornar relation_extensions em chamadas de API quando o parâmetro return_relation_extensions=true é definido na solicitação.

Exemplo de lista de declarações

Confira um exemplo de lista de declarações de sites que contém declarações sobre sites e apps: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Como escalonar para dezenas de instruções ou mais

Em alguns casos, um principal pode querer fazer várias declarações diferentes sobre diferentes destinos, ou pode ser necessário emitir declarações de diferentes principais para o mesmo conjunto de destinos. Por exemplo, um site pode estar disponível em vários domínios de nível superior diferentes por país, e todos eles podem querer fazer uma declaração sobre o mesmo app para dispositivos móveis.

Nessas situações, as instruções de inclusão podem ser úteis. Com esse mecanismo, é possível configurar ponteiros de vários principais diferentes para um local central, que define instruções para todos os principais.

Por exemplo, você pode decidir que o local central será `https://example.com/includedstatements.json`. Esse arquivo pode ser configurado para conter o mesmo conteúdo dos exemplos acima.

Para configurar um ponteiro de um site para o arquivo de inclusão, mude `https://example.com/.well-known/assetlinks.json` para:

[{
  "include": "https://example.com/includedstatements.json"
}]

Para configurar um ponteiro de um app Android para o arquivo de inclusão, mude `res/values/strings.xml` para:

<resources>
  ...
  <string name="asset_statements">
    [{
      \"include\": \"https://example.com/includedstatements.json\"
    }]
  </string>
</resources>

Mais informações

Há uma explicação mais detalhada do formato da lista de declarações e dos conceitos básicos no nosso documento de especificação.