Criar uma lista de instruções

As instruções são hospedadas em uma lista de instruções codificada em JSON em um local conhecido em um principal, conforme definido pela especificação Asset Links. Uma lista de instruções tem uma ou mais instruções, e um principal só pode ter 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 está hospedada em um local conhecido que depende do tipo de principal (o site ou app que faz as declarações).

Listas de instruções do site

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 é tratada como um erro e resulta 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 do app Android

Em um app Android, a lista de instruções é um snippet JSON com a mesma sintaxe de um arquivo de instrução de site, mas incorporada no arquivo strings.xml e referenciado no manifesto, conforme mostrado a seguir.

No 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 para um app Android compatível com o compartilhamento de local (um recurso para Android não compatível no momento):

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

Correspondência de uma meta

Toda instrução é sobre um destino. Ao consumir uma instrução, você precisa corresponder o destino de uma declaração a alguma entidade real. Se o destino da instrução corresponder à entidade, a instrução será aplicada. Estas são as regras para determinar se um destino corresponde a uma determinada entidade:

Segmentações do site

Em um site, o esquema, o host e a porta precisam ser exatamente iguais. As portas padrão para HTTP e HTTPS (80 e 443, respectivamente) são assumidas implicitamente. Se o destino de uma instrução descreve http://www.example.com:80, o site http://www.example.com é considerado uma correspondência.

Exemplo

Considerando a instrução a seguir

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

Os seguintes URIs IRÃ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://user@password:www.google.com/

Os URLs a seguir NÃO vão corresponder:

  • 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.