App Link est un mécanisme Android (Android 6.0+) qui ouvre automatiquement les liens web dans l'application installée, en contournant la boîte de dialogue de choix. Le terme a été introduit par Google en 2015 avec Android 6.0 Marshmallow. Selon Android Developers, App Link utilise Digital Asset Links — une vérification cryptographique via un fichier sur le serveur, confirmant que le domaine appartient au développeur de l'application.
Points clés
App Link (Android App Link) est un lien HTTPS standard qui, lorsqu'on clique sur un appareil Android, ouvre automatiquement l'application installée sans afficher la boîte de dialogue standard de choix entre navigateur et application. Google a introduit App Link dans Android 6.0 (API 23) comme solution au problème de la « boîte de dialogue de choix », qui réduisait la conversion des deep links en raison du clic supplémentaire et de la confusion de l'utilisateur.
L'innovation clé : la vérification. Android vérifie que le domaine appartient réellement au développeur de l'application via l'API Digital Asset Links. Google Play Store vérifie App Link lors de la publication et peut rejeter une mise à jour si la vérification échoue. Cela rend App Link plus sécurisé que Custom URL Scheme : aucune autre application ne peut intercepter un lien vers votre domaine.
Digital Asset Links est un protocole ouvert que Google utilise non seulement pour App Link, mais aussi pour lier des sites web à des applications dans les résultats de recherche, Google Assistant et Smart Lock for Passwords. Le protocole est basé sur une vérification cryptographique : dans assetlinks.json, l'empreinte SHA256 du certificat de signature de l'application est spécifiée, ce qui élimine la contrefaçon.
Le processus de fonctionnement d'App Link comprend trois étapes : la vérification des Digital Asset Links, le traitement via Intent Filter et la redirection automatique. Chaque étape est obligatoire. Si la vérification échoue, Android affiche une boîte de dialogue de choix — ce deep link fonctionne normalement mais sans l'avantage de la transition automatique.
Asset Links est un fichier JSON placé sur le serveur à l'adresse https://domain/.well-known/assetlinks.json. Le fichier contient un tableau d'objets avec des champs : relation (tableau de chaînes décrivant le type de relation), target (objet avec namespace et package_name de l'application, ainsi que sha256_cert_fingerprints — tableau d'empreintes SHA256 du certificat de signature).
// assetlinks.json — configuration minimale d'App Link
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:AD:A4:C5:AD:6B:01:14:79:6B:CB:12:6B:21:39:6F:EA"
]
}
}]
L'empreinte SHA256 est obtenue à partir du certificat utilisé pour signer l'application. Pour les builds de débogage, le certificat de débogage standard Android est utilisé ; pour les builds de publication, le certificat de Google Play Console ou le vôtre. Important : lors du changement de certificat de signature (par exemple, lors du passage à App Signing by Google Play), il est nécessaire de mettre à jour assetlinks.json sur le serveur, sinon App Link cessera de fonctionner.
Android vérifie App Link au premier clic sur un lien. Le système télécharge assetlinks.json depuis le serveur, compare package_name et l'empreinte SHA256 avec le certificat de l'application installée. Si les données correspondent, Android marque l'Intent Filter comme vérifié, et tous les liens suivants vers ce domaine s'ouvrent automatiquement, sans dialogue.
// AndroidManifest.xml — Intent Filter pour App Link
<activity
android:name=".ui.ProductActivity"
android:exported="true">
<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"
android:host="example.com"
android:pathPrefix="/product" />
</intent-filter>
</activity>
autoVerify="true" est un attribut obligatoire qui ordonne à Android de vérifier assetlinks.json. Sans cet attribut, l'Intent Filter ne sera pas vérifié et App Link ne sera pas activé. Android prend en charge plusieurs Intent Filters dans une même Activity — pour différents hôtes. Le système vérifie chaque hôte séparément. La vérification est effectuée de manière asynchrone et peut prendre jusqu'à 20 secondes au premier clic.
Après une vérification réussie, Android ouvre automatiquement l'application lors du clic sur tout lien correspondant à l'Intent Filter vérifié. L'utilisateur ne voit pas de boîte de dialogue de choix — l'application s'ouvre instantanément. Si l'application n'est pas installée, le lien s'ouvre dans le navigateur (comme une page web normale). C'est l'expérience utilisateur idéale : une transition fluide sans actions inutiles.
Important : la redirection automatique fonctionne uniquement pour le schéma https. App Link ne prend pas en charge http (protocole non sécurisé). Si un utilisateur ouvre manuellement un lien http (par exemple, depuis SMS), Android n'effectue pas la vérification et affiche une boîte de dialogue de choix. Il est recommandé d'utiliser https pour tous les liens menant à l'application et de configurer la redirection HTTP vers HTTPS sur le serveur.
App Link est l'évolution du Deep Link sur Android, pas un remplacement. La différence entre eux est fondamentale. Deep Link ordinaire (Custom URL Scheme) fonctionne via un Intent Filter avec un schéma personnalisé (myapp://) et sans autoVerify. Android ne vérifie pas si l'application est réellement associée à ce schéma — n'importe quelle application peut enregistrer myapp:// et intercepter des liens.
App Link résout trois problèmes du Deep Link. Premièrement : la sécurité — la vérification via Digital Asset Links empêche l'interception de liens. Deuxièmement : l'expérience utilisateur — l'absence de boîte de dialogue de choix augmente la conversion vers l'action cible de 20 à 40%. Troisièmement : l'indexation — Google indexe les URLs https d'App Link et peut les afficher dans les résultats de recherche comme des liens vers du contenu dans l'application.
Compatibilité : App Link fonctionne sur Android 6.0+ (99% des appareils). Pour Android 5.x (Lollipop), on utilise un Deep Link ordinaire avec boîte de dialogue de choix. Par conséquent, il est recommandé de prendre en charge les deux mécanismes : App Link pour les appareils modernes et Custom URL Scheme comme fallback pour les versions anciennes. Un Intent Filter avec autoVerify="true" ne casse pas la rétrocompatibilité — sur Android < 6, l'attribut est ignoré.
| Caractéristique | Deep Link | App Link |
|---|---|---|
| Schéma | Personnalisé (myapp://) | HTTPS (https://domain) |
| Vérification | Non | assetlinks.json |
| Boîte de dialogue | Affichée | Redirection automatique |
| Version Android | API 1+ | API 23+ (6.0+) |
| Indexation Google | Non | Oui (URL https) |
La configuration d'App Link nécessite trois étapes : configuration de l'Intent Filter dans le manifeste, placement de assetlinks.json sur le serveur et vérification de la vérification. La première étape consiste à ajouter un Intent Filter avec android:autoVerify="true" dans AndroidManifest.xml. Il est important de spécifier le schéma https, l'hôte et les chemins que l'application doit traiter. Les chemins peuvent contenir des jokers (*) pour les sous-dossiers.
La deuxième étape est la création de assetlinks.json. Le fichier peut être généré via Android Studio (Tools → App Links Assistant). L'assistant aide également au débogage et aux tests. Le fichier est placé sur le serveur à /.well-known/assetlinks.json. Le serveur doit renvoyer Content-Type: application/json et être accessible via HTTPS sans redirections. La Google Play Console affiche également le statut de vérification d'App Link dans la section Publishing.
Tests — la troisième étape. Utilisez adb pour vérifier : la commande adb shell am start -W -a android.intent.action.VIEW -d « https://example.com/product/42 » ouvre l'application. Si le navigateur s'ouvre à la place de l'application, vérifiez assetlinks.json et autoVerify. Android Studio App Links Assistant contient un testeur intégré : il affiche le statut de vérification pour chaque domaine et chemin. Pour les tests automatisés, utilisez Android Testing Library avec Intent Matcher.
Android 12 (API 31) a introduit des changements dans le traitement d'App Link. Une nouvelle vérification spécifique au domaine a été ajoutée : le système vérifie chaque lien individuellement, pas l'ensemble de l'Intent Filter. Cela améliore la sécurité, mais nécessite la mise à jour du fichier assetlinks.json lors de l'ajout de nouveaux chemins. Android 12 a également introduit Android App Links Assistant inclus avec ADB — des commandes pour gérer la vérification via le shell.
Plusieurs domaines est un scénario typique pour la production. L'application peut traiter des liens de example.com, m.example.com et example.org. Chaque domaine nécessite un assetlinks.json séparé sur le serveur correspondant. Dans le manifeste, plusieurs Intent Filters sont ajoutés — un par domaine. Tous les domaines doivent être accessibles via HTTPS et réussir la vérification indépendamment.
App Link et Jetpack Navigation est la méthode recommandée pour gérer App Link dans les applications Android modernes. Jetpack Navigation prend en charge les deep links déclaratifs dans nav_graph.xml ou via NavDeepLinkRequest. Cela simplifie la navigation : le développeur décrit quel écran s'ouvre pour une URL donnée, et le composant Navigation traite lui-même l'Intent et restaure la pile de navigation. Google recommande d'utiliser Jetpack Navigation pour App Link.
// Traitement d'App Link via Jetpack Navigation
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDeepLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDeepLink(intent)
}
private fun handleDeepLink(intent: Intent) {
intent.data?.let { uri ->
navController.handleDeepLink(NavDeepLinkRequest
.Builder
.fromUri(uri)
.build()
)
}
}
}
Google Play Store vérifie App Link lors de la publication. Si le manifeste contient un Intent Filter avec autoVerify mais que assetlinks.json est indisponible ou incorrect, Google Play peut rejeter la mise à jour avec un avertissement. Dans la console développeur (Policy and Programs → App Links), le statut de vérification de chaque domaine est affiché. Avant la publication, vérifiez toujours le statut — le corriger après le rejet de la mise à jour retarde la sortie.
Questions fréquentes
App Link est un Deep Link avec vérification via Digital Asset Links. Les principales différences : App Link utilise un schéma https au lieu d'un schéma personnalisé, n'affiche pas de boîte de dialogue de choix et est indexé par Google. Un Deep Link ordinaire fonctionne sur toutes les versions d'Android mais nécessite une sélection manuelle de l'application.
Le fichier est placé à la racine du serveur HTTPS à /.well-known/assetlinks.json. Le serveur doit renvoyer Content-Type: application/json. Le fichier doit être mis à jour lors du changement du certificat de signature ou de l'ajout de nouveaux domaines.
Raisons principales : absence de android:autoVerify="true" dans l'Intent Filter, assetlinks.json indisponible via HTTPS, empreinte SHA256 incorrecte, certificat de signature différent (debug vs release). Vérifiez le statut de vérification via adb shell dumpsync domain_verification.
Non — App Link nécessite un serveur HTTPS avec assetlinks.json accessible. Si vous n'avez pas de domaine, utilisez Firebase Hosting ou GitHub Pages pour héberger le fichier. Alternative : Custom URL Scheme (sans vérification) ou Firebase Dynamic Links.
Non — App Link est pris en charge sur Android 6.0 (API 23) et supérieur. Sur Android 5, l'Intent Filter avec android:autoVerify="true" ignore l'attribut et fonctionne comme un Deep Link ordinaire avec boîte de dialogue de choix. Il est recommandé de prendre en charge les deux mécanismes pour la rétrocompatibilité.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi