Sintassi dell'elenco di istruzioni

Un elenco di istruzioni è un file o uno snippet codificato in JSON in una posizione nota.

Posizione dell'elenco di istruzioni

Consulta la sezione Creazione di un elenco di istruzioni per sapere dove deve essere archiviato questo elenco.

Sintassi

L'elenco di istruzioni o lo snippet è costituito un array JSON di una o più istruzioni di siti web o app sotto forma di oggetti JSON. Queste istruzioni possono essere in qualsiasi ordine. Ecco la sintassi generale:

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
relazione
Un array di una o più stringhe che descrivono la relazione dichiarata per il target. Consulta l'elenco di stringhe di relazione definite. Esempio: delegate_permission/common.handle_all_urls
target
L'asset target a cui si applica la presente dichiarazione. Tipi di target disponibili:
  • "target": {
      "namespace": "web",
      "site": "site_root_url"
    }
    spazio dei nomi
    Deve essere web per i siti web.
    sito
    URI del sito di destinazione dell'istruzione, nel formato http[s]://<hostname>[:<port>], dove <hostname> è valido, e <port> deve essere omesso quando si utilizza la porta 80 per HTTP o la porta 443 per HTTPS. Il target di un sito web può essere solo un dominio principale. non puoi limitare a una sottodirectory specifica: tutte le directory sotto questa radice corrisponderanno. I sottodomini non devono essere considerati corrispondenti: in altre parole, se il file di dichiarazione è ospitato su www.example.com, www.puppies.example.com non deve essere considerato una corrispondenza. Per regole ed esempi sulla corrispondenza dei target del sito web, consulta la documentazione sui target. Esempio: http://www.example.com
  • "target": {
      "namespace": "android_app",
      "package_name": "fully_qualified_package_name",
      "sha256_cert_fingerprints": ["cert_fingerprint"]
    }
    spazio dei nomi
    Deve essere android_app per le app per Android.
    package_name
    Il nome del pacchetto completo dell'app a cui si applica questa istruzione. Esempio: com.google.android.apps.maps
    sha256_cert_fingerprints
    L'impronta SHA265 maiuscola del certificato per l'app che a cui si applica la dichiarazione. Puoi calcolarlo utilizzando openssl o Java keytool come mostrato qui:
    • openssl x509 -in $CERTFILE -noout -fingerprint -sha256
    • keytool -printcert -file $CERTFILE | grep SHA256
    Esempio: ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"].

    Se utilizzi la firma dell'app di Google Play per la tua app, la fingerprint del certificato prodotta eseguendo keytool o openssl in locale di solito non corrisponde a quella su utente dispositivi mobili. Puoi verificare se utilizzi la firma dell'app Google Play per la tua app nel tuo account sviluppatore Play Console in Release > Setup > App Integrity. Se è così, nella stessa pagina troverai anche lo snippet JSON Digital Asset Links corretto per la tua app.

Elenco di istruzioni di esempio

Ecco un esempio di elenco di istruzioni per il sito web che contiene dichiarazioni riguardanti siti web e app: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Scalare fino a decine di dichiarazioni o più

In alcuni casi, un'entità potrebbe voler fare molte dichiarazioni diverse su obiettivi diversi o potrebbe essere necessario rilasciare dichiarazioni con entità diverse allo stesso insieme di target. Ad esempio, un sito web potrebbe essere disponibile su molti domini di primo livello diversi per paese e tutti potrebbero voler fare una dichiarazione sulla stessa app mobile.

Per queste situazioni, le istruzione include possono essere utili. Utilizzando questo meccanismo, puoi configurare puntatori da molte entità diverse una posizione centrale, che definisce le istruzioni per tutte le entità.

Ad esempio, potresti decidere che la posizione centrale deve essere "https://example.com/includedstatements.json". Questo file può essere configurato in modo da contenere gli stessi contenuti degli esempi precedenti.

Per impostare un puntatore da un sito web al file di inclusione, procedi nel seguente modo: cambia "https://example.com/.well-known/assetlinks.json" in:

[{
  "include": "https://example.com/includedstatements.json"
}]

Per configurare un puntatore da un'app per Android alla sezione Includi cambia "res/values/strings.xml" in:

<resources>
  ...
  <string name="asset_statements">
    [{
      \"include\": \"https://example.com/includedstatements.json\"
    }]
  </string>
</resources>

Ulteriori informazioni

Una spiegazione più dettagliata del formato dell'elenco di istruzioni e dei concetti sottostanti è disponibile nel nostro documento delle specifiche.