Creazione di un elenco estratti conto

Le istruzioni sono ospitate in un elenco di istruzioni con codifica JSON in una posizione nota su un'entità, come definito dalla specifica dei link degli asset. Un elenco di istruzioni contiene una o più istruzioni e un'entità può avere un solo elenco.

Sintassi dell'elenco di istruzioni

Consulta la sintassi dell'elenco di istruzioni.

Posizione elenco estratti conto

L'elenco degli estratti conto è ospitato in una posizione nota che dipende dal tipo di entità (il sito web o l'app che effettua le dichiarazioni).

Elenchi di istruzioni per il sito web

Su un sito web, un elenco di estratti conto è un file di testo che si trova al seguente indirizzo:

scheme://domain/.well-known/assetlinks.json

Annota il punto nel nome della cartella .well-known.

Qualsiasi risposta dal server diversa da HTTP 200 viene trattata come un errore e genererà un elenco di istruzioni vuoto. Per HTTPS, anche le connessioni senza una catena di certificati che possono essere verificate con l'elenco radice attendibile comporteranno un elenco di istruzioni vuoto.

Esempio

Ecco un esempio di elenco di dichiarazioni su un sito web: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Elenchi di istruzioni per le app per Android

In un'app per Android, l'elenco di istruzioni è uno snippet JSON con la stessa sintassi di un file di istruzioni di un sito web, ma è incorporato nel file logs.xml e viene fatto riferimento nel file manifest, come mostrato di seguito.

Nel file AndroidManifest.xml:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

In res/values/strings.xml:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

Esempio

Ecco un esempio di snippet res/values/strings.xml per un'app per Android che supporta la condivisione della posizione con l'app (una funzionalità di Android attualmente non supportata):

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

Corrispondenza di un target

Ogni affermazione riguarda un target. Quando utilizzi un'istruzione, devi creare una corrispondenza tra il target di un'istruzione e un'entità effettiva. Se il target dell'istruzione corrisponde all'entità, viene applicata l'istruzione. Di seguito sono riportate le regole per determinare se un target corrisponde a una determinata entità:

Target per il sito web

Per un sito web, lo schema del sito, l'host e la porta devono corrispondere esattamente. Le porte predefinite per HTTP e HTTPS (rispettivamente 80 e 443) vengono presupposte implicitamente. Se il target di un'istruzione descrive http://www.example.com:80, il sito web http://www.example.com viene considerato una corrispondenza.

Esempio

Dato il seguente obiettivo dell'istruzione

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

I seguenti URI corrisponderanno :

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

I seguenti URL NON corrisponderanno:

  • http://www.google.com/ (schema errato)
  • https://google.com/ (il nome host non corrisponde)
  • https://www.google.com:444/ (Porta non corrispondente)

Target app

Per un'app, l'hash del certificato e il nome del pacchetto della destinazione devono corrispondere esattamente all'applicazione.