Creazione di un elenco di istruzioni

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

Sintassi dell'elenco di istruzioni

Consulta la sintassi dell'elenco di istruzioni.

Località elenco estratti conto

L'elenco di istruzioni viene ospitato in una posizione nota che dipende dal tipo di principal (il sito web o l'app che fa le dichiarazioni).

Elenchi di estratti conto del sito web

Su un sito web, un elenco di istruzioni è un file di testo situato al seguente indirizzo:

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

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

Qualsiasi risposta dal server oltre a HTTP 200 viene considerata come un errore e genera un elenco di istruzioni vuoto. Per HTTPS, qualsiasi connessione senza una catena di certificati che possa essere verificata con l'elenco principale attendibile comporterà anche 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 app Android

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

In 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

Di seguito è riportato un esempio di snippet res/values/strings.xml per un'app Android che supporta la condivisione della posizione con l'app (una funzionalità 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 con un target

Ogni istruzione riguarda un target. Quando fruisci di una dichiarazione, devi far corrispondere il target in una determinata dichiarazione con un'entità in realtà. Se la destinazione della dichiarazione corrisponde all'entità, si applica. Di seguito sono riportate le regole per determinare se un target corrisponde a una determinata entità:

Targeting per sito web

Per un sito web, lo schema, l'host e la porta del sito devono corrispondere esattamente. Le porte predefinite per HTTP e HTTPS (rispettivamente 80 e 443) sono assunte implicitamente; se una destinazione di istruzione descrive http://www.example.com:80, il sito web http://www.example.com è considerato una corrispondenza.

Esempio

Data la seguente destinazione della dichiarazione

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

I seguenti URI soddisfaranno:

  • 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://utente@password:www.google.com/

I seguenti URL NON corrisponderanno:

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

Target per app

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