As instruções são hospedadas em uma lista de instruções codificadas em JSON em um local conhecido em um principal, conforme definido pela especificação de links de recursos. Uma lista de instruções contém uma ou mais instruções, e a principal pode ter apenas uma lista de instruções.
Sintaxe da lista de instruções
Consulte a sintaxe da lista de instruções.
Local da lista de extratos
A lista de instruções é hospedada em um local bem conhecido que depende do tipo de principal (o site ou app que faz as declarações).
Listas de instruções de sites
Em um site, uma lista de instruções é um arquivo de texto localizado no seguinte endereço:
scheme://domain/.well-known/assetlinks.json
Observe o ponto no nome da pasta .well-known.
Qualquer resposta do servidor além de HTTP 200
será tratada como um erro e resultará em uma lista de instruções vazia. Para HTTPS, qualquer conexão sem uma cadeia de certificados que
possa ser verificada com a lista raiz confiável também resultará em uma lista de instruções vazia.
Exemplo
Veja um exemplo de lista de instruções em um site: http://example.digitalassetlinks.org/.well-known/assetlinks.json.
Listas de instruções de apps Android
Em um app Android, a lista de instruções é um snippet JSON com a mesma sintaxe de um arquivo de instruções de site, mas está incorporada ao arquivo strings.xml e referenciada no manifesto, conforme mostrado a seguir.
Em AndroidManifest.xml:
<manifest> <application> ... <meta-data android:name="asset_statements" android:resource="@string/asset_statements" /> ... </application> </manifest>
Em res/values/strings.xml:
<resources> ... <string name="asset_statements"> ... statement list ... </string> </resources>
Exemplo
Veja um exemplo de snippet res/values/strings.xml de um app Android compatível com o compartilhamento de local. No momento, o recurso Android não é compatível.
<resources> ... <string name="asset_statements"> [{ \"relation\": [\"delegate_permission/common.share_location\"], \"target\": { \"namespace\": \"web\", \"site\": \"https://example.com\" } }] </string> </resources>
Como corresponder a uma meta
Cada instrução é sobre um destino. Ao consumir uma instrução, é necessário corresponder o alvo em uma instrução com relação a alguma entidade na realidade. Se o destino da instrução corresponder à entidade, a instrução será aplicada. Veja as regras para determinar se um destino corresponde a uma determinada entidade:
Segmentações do site
Para um site, o esquema, o host e a porta do site precisam ser idênticos. As portas padrão para HTTP e HTTPS (80 e 443, respectivamente) são presumidas implicitamente. Se um destino de instrução descreve http://www.example.com:80, o site http://www.example.com é considerado uma correspondência.
Exemplo
Considerando o objetivo da instrução a seguir
"target": { "namespace": "web", "site": "https://www.google.com" }
Os seguintes URIs vÃO corresponder:
- https://www.google.com/
- https://www.google.com:443/
- https://www.google.com/foo
- https://www.google.com/foo?bar
- https://www.google.com/foo#bar
- https://usuário@senha:www.google.com.br/
Os URLs a seguir NÃO serão correspondentes:
- http://www.google.com/ (Esquema incorreto)
- https://google.com/ (O nome do host não corresponde)
- https://www.google.com:444/ (A porta não corresponde)
Destinos de apps
Para um app, o hash do certificado e o nome do pacote do destino precisam corresponder exatamente ao aplicativo.