Créer une liste d'instructions

Les instructions sont hébergées dans une liste d'instructions encodées au format JSON, à un emplacement connu sur un compte principal, tel que défini par la spécification des liens d'éléments. Une liste d'instructions contient une ou plusieurs instructions, et un compte principal ne peut en avoir qu'une seule.

Syntaxe de la liste d'instructions

Consultez la syntaxe de la liste d'instructions.

Emplacement de la liste des relevés

La liste des relevés est hébergée à un emplacement connu qui dépend du type de principal (site Web ou application à l'origine des déclarations).

Listes des relevés de sites Web

Sur un site Web, une liste de relevés est un fichier texte situé à l'adresse suivante:

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

Notez le point dans le nom du dossier .well-known.

Toute réponse du serveur autre que HTTP 200 est traitée comme une erreur et entraîne l'affichage d'une liste d'instructions vide. Pour HTTPS, toute connexion sans chaîne de certificats pouvant être validée avec la liste racine de confiance entraînera également une liste d'instructions vide.

Exemple

Voici un exemple de liste de relevés sur un site Web: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Listes de relevés d'application Android

Dans une application Android, la liste des instructions est un extrait de code JSON ayant la même syntaxe qu'un fichier d'instruction de site Web, mais elle est intégrée au fichier string.xml et référencée dans le fichier manifeste, comme indiqué ci-dessous.

Dans le fichier AndroidManifest.xml :

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

Dans res/values/strings.xml:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

Exemple

Voici un exemple d'extrait res/values/strings.xml pour une application Android compatible avec le partage de position avec cette application (fonctionnalité Android non compatible actuellement):

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

Correspondance avec une cible

Chaque instruction concerne une cible. Lorsque vous consommez une instruction, vous devez faire correspondre la cible dans une instruction avec une entité en réalité. Si la cible de l'instruction correspond à l'entité, l'instruction s'applique. Voici les règles permettant de déterminer si une cible correspond à une entité donnée:

Cibles de sites Web

Pour un site Web, le schéma du site, l'hôte et le port doivent correspondre exactement. Les ports par défaut pour HTTP et HTTPS (80 et 443, respectivement) sont supposés être utilisés. Si une cible d'instruction décrit http://www.example.com:80, le site Web http://www.example.com est considéré comme une correspondance.

Exemple

Compte tenu de la cible de déclaration suivante :

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

Les URI suivants APPROUVERONT:

  • 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://utilisateur@motdepasse:www.google.com/

Les URL suivantes NE correspondent PAS:

  • http://www.google.com/ (schéma incorrect)
  • https://google.com/ (Host name does not match)
  • https://www.google.com:444/ (Le port ne correspond pas)

Cibles d'application

Pour une application, le hachage de certificat et le nom de package de la cible doivent correspondre exactement à l'application.