Tester les liens vers une application

Lorsque vous implémentez la fonctionnalité de lien d'application, vous devez tester la fonctionnalité de lien pour vous assurer que le système peut associer votre application à vos sites Web et gérer les requêtes d'URL comme prévu.

Pour tester un fichier de déclaration existant, vous pouvez utiliser l'outil Générateur et testeur de listes de déclarations.

Les sections suivantes décrivent comment tester manuellement la validation de vos liens d'application. Si vous préférez, vous pouvez tester la validation à partir de l'outil Play Deep Links ou de l'assistant pour les liens vers une application Android Studio.

Confirmer la liste des hôtes à valider

Lors des tests, vous devez confirmer la liste des hôtes associés que le système doit valider pour votre application. Créez une liste de toutes les URL dont les filtres d'intent correspondants incluent les attributs et éléments suivants :

  • Attribut android:scheme avec la valeur http ou https
  • Attribut android:host avec un modèle d'URL de domaine
  • Élément d'action android.intent.action.VIEW
  • Élément de catégorie android.intent.category.BROWSABLE

Utilisez cette liste pour vérifier qu'un fichier JSON Digital Asset Links est fourni sur chaque hôte et sous-domaine nommés.

Confirmer les fichiers Digital Asset Links

Pour chaque site Web, utilisez l'API Digital Asset Links pour vérifier que le fichier JSON Digital Asset Links est correctement hébergé et défini :

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

Pour les liens d'application dynamiques, vous pouvez également vérifier les extensions de relation.

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

Dans le cadre de votre processus de test, vous pouvez vérifier les paramètres système actuels pour la gestion des liens. Exécutez la commande suivante pour obtenir la liste des règles de gestion des liens existantes pour toutes les applications de votre appareil connecté :

adb shell dumpsys package domain-preferred-apps

La commande suivante fait la même chose :

adb shell dumpsys package d

La commande renvoie une liste de chaque utilisateur ou profil défini sur l'appareil, précédée d'un en-tête au format suivant :

App linkages for user 0:

Après cet en-tête, la sortie utilise le format suivant pour lister les paramètres de gestion des liens de cet utilisateur :

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

Cette liste indique les applications associées à quels domaines pour cet utilisateur :

  • Package : identifie une application par son nom de package, tel qu'il est déclaré dans son fichier manifeste.
  • Domains : affiche la liste complète des hôtes dont cette application gère les liens Web, en utilisant des espaces comme délimiteurs.
  • Status : affiche le paramètre de gestion des liens actuel pour cette application. Une application qui a réussi la validation et dont le fichier manifeste contient android:autoVerify="true", affiche l'état always. Le nombre hexadécimal après cet état est lié à l'enregistrement par le système Android des préférences de l'utilisateur en matière de liens d'application. Cette valeur n'indique pas si la validation a réussi.

Exemple de test

Pour que la validation des liens d'application réussisse, le système doit pouvoir valider votre application avec chacun des sites Web que vous spécifiez dans un filtre d'intent donné qui répond aux critères des liens d'application. L'exemple suivant montre une configuration de fichier manifeste avec plusieurs liens d'application définis :

<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>

La liste des hôtes que la plate-forme tenterait de valider à partir du fichier manifeste précédent est la suivante :

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

La liste des hôtes que la plate-forme ne tenterait pas de valider à partir du fichier manifeste précédent est la suivante :

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

Pour en savoir plus sur les listes de déclarations, consultez Créer une liste de déclarations