Per iniziare

Panoramica

Il protocollo e l'API Digital Asset Links consentono a un'app o un sito web di dichiarazioni pubbliche e verificabili di altre app o siti web. Ad esempio, un sito web può dichiarare di essere associato a una specifica app Android oppure indicare di voler condividere le credenziali utente con un altro sito web.

Ecco alcuni possibili utilizzi dei link agli asset digitali:

  • Il sito web A dichiara che i link al suo sito devono aprirsi in un'app designata sui dispositivi mobili, se l'app è installata.
  • Il sito web A dichiara di poter condividere le proprie credenziali utente di Chrome con il sito web B per impedire all'utente di accedere al sito web B se ha eseguito l'accesso al sito web A.
  • L'app A dichiara di poter condividere le impostazioni del dispositivo, ad esempio la posizione, con il sito web B.

Termini chiave

  • Entità: l'entità è l'app o il sito web che utilizza l'istruzione. In Digital Asset Links, l'entità è sempre l'app o il sito web che ospita l'elenco di istruzioni.
  • Elenco di dichiarazioni: le istruzioni sono contenute in un elenco di istruzioni che contiene una o più istruzioni. Un elenco di istruzioni è di tipo chiaro e accessibile pubblicamente, in una località controllata dall'entità e con contenuti di difficile spoofing o manomissione. Può essere un file autonomo o una sezione di un altro elemento di dimensioni maggiori. Ad esempio, su un sito web è un intero file, mentre in un'app per Android si tratta di una sezione del file manifest dell'app. Le dichiarazioni possono essere visualizzate e verificate da chiunque, utilizzando metodi non proprietari. Per saperne di più, consulta la documentazione dell'elenco degli estratti conto.
  • Dichiarazione: un'istruzione è un costrutto JSON strettamente strutturato, costituito da una relazione (cosa indica l'istruzione, ad esempio: abilita le credenziali di condivisione) e una destinazione (il sito web o l'app a cui si riferisce la relazione). Pertanto, ogni affermazione è come una frase, dove principal dice relation su target.
  • Consumatore di dichiarazioni: un consumer di istruzioni richiede un elenco di istruzioni a un'entità, verifica la presenza di un'istruzione nei confronti di una determinata entità e, se esiste, può eseguire l'azione specificata. Consulta la dichiarazione che contiene la documentazione per ulteriori informazioni.

Esempio di utilizzo rapido

Ecco un esempio molto semplice di come il sito web www.example.com potrebbe utilizzare Digital Asset Links per specificare che gli eventuali link che rimandano agli URL di quel sito devono aprirsi in un'app specifica anziché nel browser:

  1. Il sito web www.example.com pubblica un elenco di istruzioni all'indirizzo https://www.example.com/.well-known/assetlinks.json. Questo è il nome ufficiale e la località di un elenco di istruzioni su un sito; gli elenchi di istruzioni in qualsiasi altra località o con qualsiasi altro nome non sono validi per questo sito. Nel nostro esempio, l'elenco degli estratti conto è composto da un'unica istruzione, che concede alla sua app Android l'autorizzazione ad aprire i link sul proprio sito:
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    Un elenco di istruzioni supporta una serie di istruzioni all'interno dei simboli [ ], ma il nostro file di esempio contiene una sola istruzione. sha256_cert_fingerprints è la fingerprint SHA256 del certificato di firma della tua app. Scopri ulteriori dettagli nella documentazione relativa ai link per app Android.
  2. L'app per Android elencata nella dichiarazione precedente ha un filtro per intent che specifica lo schema, l'host e il pattern del percorso degli URL che vuole gestire: in questo caso https://www.example.com. Il filtro per intent include un attributo speciale android:autoVerify, nuovo per Android M, che indica che Android deve verificare l'istruzione sul sito web descritto nel filtro per intent quando è installata.
  3. Un utente installa l'app. Android vede il filtro per intent con l'attributo autoVerify e controlla la presenza dell'elenco delle istruzioni nel sito specificato; se presente, Android controlla se il file include un'istruzione che concede la gestione dei link all'app e controlla l'app rispetto all'istruzione tramite hash del certificato. Se tutto funziona, Android inoltrerà tutti gli intent https://www.example.com all'app example.com.
  4. L'utente fa clic su un link che rimanda a https://www.example.com/puppies sul suo dispositivo. Questo link potrebbe trovarsi ovunque: in un browser, in un suggerimento di Google Search Appliance o altrove. Android inoltra l'intent all'app example.com.
  5. L'app example.com riceve l'intent e sceglie di gestirlo, aprendo la pagina dei cuccioli. Se per qualche motivo l'app aveva rifiutato di gestire il link oppure se l'app non era installata sul dispositivo, il link sarebbe stato inviato al gestore di intent predefinito successivo che corrisponde a questo pattern di intent (spesso il browser).

Considerazioni importanti e limitazioni:

  • Il protocollo non autentica l'entità che effettua l'istruzione, ma si trova in una posizione specifica fortemente associata all'entità e sotto il suo controllo.
  • Il protocollo non autentica la destinazione dell'istruzione, ma offre al chiamante un metodo per autenticare la destinazione (ad esempio, un'istruzione identifica i target delle app per dispositivi mobili in base all'hash del certificato e al nome del pacchetto).
  • Il protocollo non esegue in modo nativo azioni relative alle istruzioni, bensì consente di esporre le istruzioni che un'applicazione che consuma deve convalidare e quindi decidere se e come agire. Android M esegue questi passaggi in modo nativo; ad esempio, se un sito web delega la gestione dei link a un'app specifica, Android controlla e verifica l'istruzione, verifica l'app di destinazione e offre all'app l'opzione per gestire il link specificato.
  • Il protocollo non consente di rilasciare affermazioni su due terze parti, ovvero il sito web A può fare una dichiarazione sul sito web B, ma il sito web A non può rilasciare una dichiarazione sulla relazione del sito web B con il sito web C. Tuttavia, se il sito web B considera attendibile il sito web A, può controllare il sito web A per un'istruzione che concede l'autorizzazione al sito web C e decidere di implementarlo.

Passaggi successivi

  1. Verifica se esiste una documentazione esplicita per il tuo caso d'uso.
  2. Scopri come creare una dichiarazione.