Outil gratuit
Générateur AASA et assetlinks.json
Créez le fichier apple-app-site-association pour les Universal Links iOS et le fichier assetlinks.json pour les App Links Android. Saisissez les informations de votre app, puis copiez ou téléchargez un fichier prêt à mettre en ligne.
- Gratuit, sans compte
- Fonctionne dans votre navigateur
- Format components actuel d’Apple
Vous avez déjà les fichiers ? Vérifiez-les avec le validateur
Apps
Ajoutez chaque app qui doit ouvrir les liens de ce domaine. Chacune devient une entrée de appIDs.
- App 1
10 caractères, dans votre compte Apple Developer, sous Membership details.
Dans la cible de votre app sous Xcode, par exemple com.example.app.
Chemins qui ouvrent l’app
Les règles sont lues de haut en bas et la première qui correspond l’emporte : placez donc les exclusions au-dessus des règles plus larges. * correspond à n’importe quel nombre de caractères, ? à un seul.
- Règle 1
paires nom=valeur reliées par &
Autres services
Votre fichier
apple-app-site-association
Exemple. Saisissez vos informations pour le remplacer.
{
"applinks": {
"details": [
{
"appIDs": [
"ABCDE12345.com.example.app"
],
"components": [
{
"/": "/*"
}
]
}
]
}
}Généré dans votre navigateur. Rien n’est envoyé nulle part.
Où l’héberger
- Déposez-le à l’adresse
https://votre-domaine/.well-known/apple-app-site-association, sans extension.json. - Servez-le en HTTPS avec un certificat valide et un 200 direct, sans redirection.
- Envoyez l’en-tête
Content-Type: application/json. - Répétez l’opération sur chaque host de vos liens :
example.cometwww.example.comont chacun besoin du fichier et d’une entréeapplinks:. - Le CDN d’Apple récupère un nouveau fichier sous 24 heures. En attendant, testez avec
?mode=developer.
Vous préférez ne pas héberger ces fichiers ? Les smart links sont gratuits, et avec Enterprise Appy sert les deux fichiers sur le domaine de liens de votre app.
Créer un lien gratuitComment tout s’articule
Deux fichiers, une vérification croisée
Les Universal Links et les App Links n’ouvrent votre app que si chaque côté se porte garant de l’autre. L’app cite le domaine, et un fichier sur ce domaine cite l’app. S’il manque une moitié, le lien ouvre votre site.
App iOS
Entitlement Associated Domains
applinks:example.comVotre domaine
example.com/.well-known/
apple-app-site-association
Indique l’app ID : Team ID plus bundle ID
ABCDE12345.com.example.appassetlinks.json
Indique le nom du package et l’empreinte SHA-256
com.example.app · 14:6D:E9:…
App Android
Intent filter avec autoVerify
android:autoVerify="true"android:host="example.com"Les deux moitiés correspondent : le lien ouvre l’app
Il manque quelque chose : le lien ouvre votre site
Champ par champ
Ce que signifie chaque clé des fichiers
Les deux fichiers sont du JSON tout simple. Voici les clés écrites par le générateur, plus les clés facultatives à connaître.
apple-app-site-association
applinks- Le service Universal Links. Tout ce qui décide quelle URL ouvre quelle app se trouve à l’intérieur.
details- Un tableau d’entrées qui associent chacune un groupe d’apps à un groupe de règles d’URL. Utilisez-en plusieurs si des apps différentes gèrent des chemins différents.
appIDs- Des app IDs au format
<Team ID>.<bundle ID>, par exempleABCDE12345.com.example.app. Chaque app doit aussi déclarer le domaine dans son entitlement Associated Domains. components- Les règles d’URL, lues dans l’ordre. La première qui correspond décide si l’app s’ouvre.
/- Un motif pour le chemin de l’URL, comme
/products/*. Sans lui, tous les chemins correspondent. ?- Les paramètres de requête à faire correspondre, sous forme de dictionnaire.
{"ref": "?*"}exige un paramètrerefnon vide. #- Un motif pour le fragment placé après
#. exclude- À mettre sur
truepour garder les URL concernées sur le site. Placez ces règles au-dessus des règles plus larges. comment- Une note pour les personnes qui lisent le fichier. iOS l’ignore.
webcredentials- Facultatif. Liste les apps qui peuvent utiliser, via le remplissage automatique, les mots de passe enregistrés pour ce site.
appclips- Facultatif. Liste les App Clips que ce domaine peut lancer.
* correspond à n’importe quel nombre de caractères, ? à un seul et ?* à au moins un. La correspondance respecte la casse, sauf si vous ajoutez "caseSensitive": false.
assetlinks.json
[ ]- Le fichier est un tableau JSON de déclarations, même s’il n’en contient qu’une.
relationdelegate_permission/common.handle_all_urlsautorise l’app à ouvrir les liens de ce site.delegate_permission/common.get_login_credsajoute le partage des identifiants.target- L’app concernée par la déclaration.
namespace- Toujours
android_apppour une app Android. package_name- L’applicationId de l’app, par exemple
com.example.app. sha256_cert_fingerprints- Les empreintes SHA-256 des certificats qui signent l’app, en paires majuscules séparées par des deux-points. Listez chaque clé qui signe des builds installés par vos utilisateurs.
relation_extensions- Facultatif, Android 15 et versions ultérieures. Son
dynamic_app_link_componentsajoute des règles de chemin dans l’esprit des components d’Apple. Les versions plus anciennes l’ignorent.
L’ancien format paths
Avant iOS 13, chaque entrée avait un seul appID, un tableau paths avec NOT devant les exclusions, et le fichier exigeait un tableau apps vide. iOS 13 et les versions suivantes lisent appIDs et components. Le générateur n’écrit que le format moderne. Si vous prenez encore en charge iOS 12, ajoutez les anciennes clés dans la même entrée.
{
"applinks": {
"apps": [],
"details": [{
"appID": "ABCDE12345.com.example.app",
"paths": ["NOT /help/website/*", "/buy/*"]
}]
}
}{
"applinks": {
"details": [{
"appIDs": ["ABCDE12345.com.example.app"],
"components": [
{"/": "/help/website/*", "exclude": true},
{"/": "/buy/*"}
]
}]
}
}Erreurs fréquentes
Pourquoi un fichier qui semble correct échoue quand même
Le JSON peut être valide et les liens ouvrir quand même le site. Vérifiez ces sept points avant toute autre chose.
- 01iOS
Mauvais préfixe de Team ID
Le fichier se charge, mais iOS n’ouvre jamais l’app.
Correctif
Utilisez le Team ID du compte qui signe la version publiée, indiqué sous Membership details. Pas l’identifiant numérique App Store, pas un Key ID, ni l’équipe d’une agence si l’app est publiée depuis votre compte.
Guide complet des Universal Links pour iOS et Android - 02Android
Clé d’importation au lieu de la clé de signature Play
Vos propres builds ouvrent l’app, les installations depuis Google Play ouvrent le navigateur.
Correctif
Google signe les apps qu’il distribue avec la clé de signature d’application. Copiez son SHA-256 dans la Play Console, sous Intégrité de l’application, et ne gardez la clé d’importation dans la liste que si vous partagez des builds signés avec elle.
App Links Android non vérifiés : le diagnostic en cinq minutes avec adb - 03iOS + Android
Le fichier se trouve derrière une redirection
L’URL s’ouvre bien dans un navigateur, mais la vérification échoue.
Correctif
Apple et Android attendent un 200 à l’URL exacte. Excluez
Universal Links ouvrent Safari ? Corrigez AASA, App Links, redirections et headers/.well-known/des redirections du domaine nu vers www, de www vers le domaine nu et par langue. - 04iOS + Android
Mauvais content type, ou du HTML au lieu du JSON
Le fichier est bien là, mais la plateforme l’ignore.
Correctif
Servez les deux fichiers en
Universal Links ouvrent Safari ? Corrigez AASA, App Links, redirections et headersapplication/json. Les serveurs envoient souvent le fichier AASA, sans extension, enapplication/octet-stream, et certains hébergeurs répondent par une page de connexion ou un contrôle anti-robots. - 05iOS + Android
Oublier le host www
Les liens vers example.com ouvrent l’app, ceux vers www.example.com ouvrent le site.
Correctif
Chaque host est vérifié séparément. Déposez le fichier sur les deux, déclarez les deux dans Associated Domains et dans vos intent filters Android.
Guide complet des Universal Links pour iOS et Android - 06iOS
Une exclusion sous une règle fourre-tout
Des pages que vous vouliez garder sur le site ouvrent l’app.
Correctif
La première règle qui correspond l’emporte. Remontez les règles
excludeau-dessus de/*, comme le fait l’exemple Appy du générateur. - 07iOS
Une extension .json ou le mauvais dossier
Rien ne se trouve à l’adresse demandée par iOS.
Correctif
Le fichier s’appelle
apple-app-site-association, sans extension, et se place dans/.well-known/. Le bouton de téléchargement ci-dessus utilise déjà ce nom.
Sans hébergement à gérer
Laissez Appy servir les deux fichiers
Avec Enterprise, votre app reçoit son propre domaine de liens, et Appy y héberge apple-app-site-association et assetlinks.json, générés à partir du Team ID, du bundle ID, du package et des empreintes que vous enregistrez. Les smart links eux-mêmes sont gratuits, et les deep links arrivent avec Pro.
- Offre gratuite
- Sans carte bancaire
- Clics illimités sur toutes les offres
- Vos liens continuent de marcher si vous résiliez
Questions fréquentes
Qu’est-ce qu’un fichier apple-app-site-association ?
Un fichier JSON placé sur votre domaine qui indique à iOS quelles apps peuvent ouvrir quelles URL en tant qu’Universal Links. Il se trouve à https://votre-domaine/.well-known/apple-app-site-association, n’a pas d’extension et liste les app IDs (Team ID plus bundle ID) avec les règles d’URL de chacun.
Qu’est-ce que assetlinks.json ?
Son équivalent Android, basé sur Digital Asset Links de Google. Il se trouve à https://votre-domaine/.well-known/assetlinks.json et indique le package et les empreintes du certificat de signature de l’app autorisée à ouvrir vos liens. Android le vérifie à l’installation de l’app, et ce n’est qu’alors qu’il traite vos liens comme des App Links vérifiés.
Où déposer les fichiers générés ?
Dans le dossier /.well-known/ à la racine de chaque host utilisé dans vos liens. Les deux fichiers doivent se charger en HTTPS avec un 200 direct, sans redirection, et avec le content type application/json. Sur un hébergement statique, une règle d’en-têtes est souvent nécessaire pour le fichier AASA, qui n’a pas d’extension.
Où trouver mon Team ID et mon bundle ID ?
Le Team ID figure dans votre compte Apple Developer, sous Membership details. Le bundle ID se trouve dans l’onglet General de la cible de votre app dans Xcode. Ensemble, ils forment l’app ID, par exemple ABCDE12345.com.example.app.
Comment obtenir l’empreinte SHA-256 pour assetlinks.json ?
Si Google Play signe votre app, ouvrez la Play Console, allez dans Intégrité de l’application et copiez le SHA-256 du certificat de la clé de signature. Pour les clés que vous détenez, lancez keytool -list -v -keystore my-release-key.keystore ou ./gradlew signingReport. Le générateur accepte la valeur avec ou sans deux-points.
Le fichier AASA doit-il utiliser paths ou components ?
Utilisez components. Apple l’a introduit avec iOS 13, et il gère les paramètres de requête, les fragments, les exclusions et les commentaires. L’ancien tableau paths n’est utile que si vous prenez encore en charge iOS 12 ou antérieur ; dans ce cas, mettez les deux dans la même entrée.
Un seul fichier peut-il couvrir plusieurs apps ?
Oui. Dans le fichier AASA, listez chaque app ID dans appIDs, ou ajoutez des entrées details distinctes si les apps gèrent des chemins différents. Dans assetlinks.json, ajoutez une déclaration par package dans le tableau. Le générateur gère plusieurs apps iOS ; pour un second package Android, copiez la déclaration et changez le nom du package et les empreintes.
Combien de temps faut-il pour que les changements arrivent sur les appareils ?
Selon Apple, son CDN récupère votre fichier AASA sous 24 heures, et les appareils vérifient les mises à jour environ une fois par semaine après l’installation. Android vérifie à l’installation de l’app ; sur un appareil de test, adb shell pm verify-app-links --re-verify com.example.app relance la vérification.
Dois-je signer le fichier AASA ?
Non. La signature avec votre certificat TLS n’était nécessaire que sous iOS 8. Depuis iOS 9, Apple attend un simple fichier JSON servi en HTTPS.
Ce que je saisis est-il envoyé à Appy ?
Non. Les fichiers sont générés par du code qui tourne dans votre navigateur, et rien de ce que vous saisissez n’est envoyé ni stocké. Le validateur fonctionne autrement : il récupère les fichiers sur votre domaine quand vous le lancez.
Étapes suivantes
Vérifiez le résultat et poursuivez la lecture
- Outil gratuitValidateur d’Universal LinksUne fois les fichiers en ligne, vérifiez-les sur votre domaine, sur le CDN d’Apple et via l’API Digital Asset Links de Google.
- GuideGuide complet des Universal Links pour iOS et AndroidGuide complet sur les universal links, deep links et app links : implémentation et bonnes pratiques pour le marketing mobile.
- GuideUniversal Links ouvrent Safari ? Corrigez AASA, App Links, redirections et headersWorkflow pratique pour corriger les universal links et app links qui ouvrent le navigateur au lieu de l’app.
- GuideApp Links Android non vérifiés : le diagnostic en cinq minutes avec adbDepuis Android 12, un App Link dont la vérification de domaine échoue s’ouvre dans le navigateur au lieu de votre app — en silence, et pas sur tous les appareils. La checklist adb qui trouve la cause vite.
- GuideDeep Linking vs Universal Links : comparaison complèteComprenez les différences clés entre deep links et universal links, quand utiliser chaque approche et comment les implémenter correctement.