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.