Creazione di un elenco estratti conto

Le istruzioni sono ospitate in un elenco di istruzioni con codifica JSON in una posizione nota di un principal, come definito dalla specifica Asset Links. Un elenco di istruzioni contiene una o più istruzioni e un principal può avere un solo elenco di istruzioni.

Sintassi dell'elenco di istruzioni

Consulta la sintassi dell'elenco delle istruzioni.

Posizione elenco estratti conto

L'elenco delle dichiarazioni è ospitato in una posizione nota che dipende dal tipo di soggetto principale (il sito web o l'app che effettuano le dichiarazioni).

Elenchi di dichiarazioni del sito web

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

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

Prendi nota del punto nel nome della cartella .well-known.

Qualsiasi risposta dal server diversa da HTTP 200 viene trattata come un errore e comporterà un elenco di estratti vuoto. Per HTTPS, qualsiasi connessione senza una catena di certificati che possa essere verificata con l'elenco delle CA radice attendibili comporterà anche un elenco di istruzioni vuoto.

Esempio

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

Elenchi delle dichiarazioni delle app per Android

In un'app per Android, l'elenco delle istruzioni è uno snippet JSON con la stessa sintassi di un file di istruzioni del sito web, ma è incorporato nel file strings.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 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'affermazione, devi confrontare il target di un'affermazione con un'entità nella realtà. Se il target dell'affermazione corrisponde all'entità, l'affermazione viene applicata. 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) vengono presupposte implicitamente; se una destinazione dell'istruzione descrive http://www.example.com:80, il sito web http://www.example.com viene considerato una corrispondenza.

Esempio

Considerando il seguente target dell'affermazione

"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/ (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.