Uma lista de instruções é um arquivo ou snippet codificado em JSON em um local conhecido.
Local da lista de declarações
Consulte Como criar uma lista de instruções para saber onde essa lista deve ser armazenada.
Sintaxe
A lista ou o snippet de declarações consiste em uma matriz JSON de uma ou mais declarações de site ou app como objetos JSON. Essas declarações podem estar em qualquer ordem. Esta é a sintaxe geral:
[ { "relation": ["relation_string "], "target": {target_object } } , ... ]
- relação
- 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 instrução se aplica. Tipos de segmentação disponíveis:
-
Segmento do site "target": { "namespace": "web", "site": "
site_root_url " }- namespace
- Precisa ser
web
para sites. - site
- O URI do site que é o destino da instrução, no formato
http[s]://<hostname>[:<port>]
, em que <hostname> é totalmente qualificado, e <port> precisa ser omitido ao usar a porta 80 para HTTP ou a porta 443 para HTTPS. Um destino de site só pode ser um domínio raiz. Não é possível limitar a um subdiretório específico. Todos os diretórios abaixo dessa raiz vão corresponder. Os subdomínios não devem ser considerados correspondentes: ou seja, se o arquivo de instrução estiver hospedado em www.example.com, www.puppies.example.com não deverá ser considerado uma correspondência. Para regras e exemplos sobre a correspondência de destino do site, consulte a documentação de destinos. Exemplo:http://www.example.com
-
Destino do app Android "target": { "namespace": "android_app", "package_name": "
fully_qualified_package_name ", "sha256_cert_fingerprints": ["cert_fingerprint "] }- namespace
- Precisa ser
android_app
para apps Android. - package_name
- O nome do pacote totalmente qualificado do app a que esta instrução se aplica. Exemplo:
com.google.android.apps.maps
- sha256_cert_fingerprints
- A impressão digital SHA265 em maiúsculas do certificado do app a que esta instrução se aplica. É possível calcular isso usando
openssl
oukeytool
do Java, conforme mostrado aqui:openssl x509 -in $CERTFILE -noout -fingerprint -sha256
keytool -printcert -file $CERTFILE | grep SHA256
["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"]
.Se você estiver usando a Assinatura de apps do Google Play no seu app, a impressão digital do certificado gerada pela execução local de
keytool
ouopenssl
geralmente não corresponde à dos dispositivos dos usuários. Você pode verificar se está usando a Assinatura de apps do Google Play no seu app na Conta de desenvolvedor do Play Console em Release > Setup > App Integrity Nesse caso, você também vai encontrar o snippet JSON correto do Digital Asset Links para seu app no mesmo página.
-
Exemplo de lista de declarações
Confira um exemplo de lista de declarações de site 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 muitas instruções diferentes sobre diferentes objetivos, ou pode haver a necessidade de emitir declarações principais para o mesmo conjunto de destinos. Por exemplo, um site pode em vários domínios de nível superior diferentes por país, e todos eles pode querer fazer uma declaração sobre o mesmo aplicativo móvel.
Para essas situações, as instruções INCLUDE podem ser úteis. Usando esse mecanismo, é possível configurar ponteiros de muitos participantes diferentes para um local central, que define declarações para todos os participantes.
Por exemplo, você pode decidir que o local central precisa ser "https://example.com/includedstatements.json". Esse arquivo pode ser configurado para ter o mesmo conteúdo dos exemplos acima.
Para configurar um ponteiro de um site da Web 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 a inclusão altere "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 sobre o formato da lista de instruções e os conceitos relacionados no nosso documento de especificações.