Testare i link app

Quando implementi la funzionalità di collegamento delle app, devi testare la funzionalità di collegamento per assicurarti che il sistema possa associare la tua app ai tuoi siti web e gestire le richieste di URL come previsto.

Per testare un file di istruzioni esistente, puoi utilizzare lo strumento Generatore e tester di elenchi di istruzioni.

Le sezioni seguenti descrivono come testare manualmente la verifica degli app link. Se preferisci, puoi testare la verifica dallo strumento Play Deep Links o dall'assistente per app link di Android Studio.

Conferma l'elenco degli host da verificare

Durante il test, devi confermare l'elenco degli host associati che il sistema deve verificare per la tua app. Crea un elenco di tutti gli URL i cui filtri intent corrispondenti includono i seguenti attributi ed elementi:

  • Attributo android:scheme con un valore di http o https
  • Attributo android:host con un pattern URL di dominio
  • Elemento di azione android.intent.action.VIEW
  • Elemento della categoria android.intent.category.BROWSABLE

Utilizza questo elenco per verificare che in ogni host e sottodominio denominato sia fornito un file JSON Digital Asset Links.

Conferma i file Digital Asset Links

Per ogni sito web, utilizza l'API Digital Asset Links per verificare che il file JSON Digital Asset Links sia ospitato e definito correttamente:

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&amp;
   relation=delegate_permission/common.handle_all_urls

Per i link dinamici per app, puoi anche controllare le estensioni delle relazioni.

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true

Nell'ambito della procedura di test, puoi controllare le impostazioni di sistema correnti per la gestione dei link. Utilizza il seguente comando per ottenere un elenco delle norme di gestione dei link esistenti per tutte le app sul dispositivo connesso:

adb shell dumpsys package domain-preferred-apps

Il seguente comando esegue la stessa operazione:

adb shell dumpsys package d

Il comando restituisce un elenco di ogni utente o profilo definito sul dispositivo, preceduto da un'intestazione nel seguente formato:

App linkages for user 0:

Dopo questa intestazione, l'output utilizza il seguente formato per elencare le impostazioni di gestione dei link per l'utente:

Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002

Questo elenco indica quali app sono associate a quali domini per l'utente:

  • Package: identifica un'app in base al nome del pacchetto, come dichiarato nel manifest.
  • Domains - Mostra l'elenco completo degli host i cui link web vengono gestiti da questa app, utilizzando gli spazi vuoti come delimitatori.
  • Status: mostra l'impostazione attuale di gestione dei link per questa app. Un'app che ha superato la verifica e il cui manifest contiene android:autoVerify="true" mostra lo stato always. Il numero esadecimale dopo questo stato è correlato al record del sistema Android delle preferenze di collegamento delle app dell'utente. Questo valore non indica se la verifica è andata a buon fine.

Esempio di test

Affinché la verifica dei link per app vada a buon fine, il sistema deve essere in grado di verificare la tua app con ciascuno dei siti web specificati in un determinato filtro per intent che soddisfa i criteri per i link per app. L'esempio seguente mostra una configurazione del file manifest con diversi app link definiti:

<activity android:name=”MainActivity”>
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:scheme="https" />
            <data android:host="www.example.com" />
            <data android:host="mobile.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="www.example2.com" />
        </intent-filter>
    </activity>

    <activity android:name=”SecondActivity”>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="account.example.com" />
        </intent-filter>
    </activity>

      <activity android:name=”ThirdActivity”>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https" />
            <data android:host="map.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="market" />
            <data android:host="example.com" />
        </intent-filter>
      </activity>

</application>

L'elenco degli host che la piattaforma tenterà di verificare dal manifest precedente è:

www.example.com
mobile.example.com
www.example2.com
account.example.com

L'elenco degli host che la piattaforma non tenterà di verificare dal manifest precedente è:

map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)

Per saperne di più sugli elenchi di istruzioni, vedi Creare un elenco di istruzioni.