Firebase Dynamic Links est un service de Google permettant de créer des liens intelligents qui dirigent l'utilisateur vers le bon endroit dans l'application, que l'application soit installée ou non. Selon la Documentation Firebase, les Dynamic Links redirigent automatiquement l'utilisateur vers l'App Store ou Google Play si l'application n'est pas installée et restaurent le contexte de transition après l'installation. Les Smart Links de Firebase résolvent le problème des URL Scheme, qui ne fonctionnent pas avec les applications non installées.
Points clés
Firebase Dynamic Links est un service cloud de Google qui crée des liens universels unifiés pour les applications mobiles sur iOS et Android. Un lien dynamique contient un deep link vers le contenu de l'application mais se comporte comme un lien HTTPS classique : si l'application est installée, il l'ouvre directement ; sinon, il redirige vers l'app store.
Contrairement aux URL Scheme classiques, les Dynamic Links peuvent fonctionner avec des applications non installées grâce à la technologie deferred deep link. Lorsqu'un utilisateur installe l'application après avoir cliqué sur le lien, Firebase enregistre les paramètres de transition et les transmet au premier lancement. Cela ouvre des possibilités pour les programmes de parrainage, les campagnes marketing et les invitations.
Les URL Scheme nécessitent que l'application soit installée et n'ont pas de mécanisme de fallback standard. Firebase Dynamic Links résout ce problème grâce à un service web intermédiaire de Firebase qui détermine l'état d'installation de l'application sur l'appareil et achemine correctement l'utilisateur. Dans le même temps, un seul lien fonctionne de manière identique sur les deux plateformes.
Firebase Dynamic Link utilise un domaine comme yourcode.page.link, qui est enregistré dans Firebase Console. Lorsqu'un utilisateur clique sur un tel lien, Firebase détermine le type d'appareil et l'état d'installation de l'application. Pour iOS, le mécanisme Universal Links est utilisé ; pour Android, App Links avec vérification automatique via Digital Asset Links.
Le processus de traitement comprend plusieurs étapes séquentielles : lors du clic sur le lien, le navigateur envoie une requête GET au serveur Firebase ; le serveur détermine la plateforme et vérifie la présence de l'application sur l'appareil. Si l'application est installée, une redirection est générée vers un Universal Link ou Intent avec des paramètres pour ouvrir l'écran cible. Si l'application n'est pas installée, il redirige vers l'App Store ou Google Play pour le téléchargement.
L'application reçoit le lien lors de l'initialisation du SDK Firebase. La méthode getDynamicLink() retourne un PendingResult avec les données de transition. Après une récupération réussie, les paramètres du deep link, les balises UTM pour l'analytique et les données arbitraires transmises lors de la création du lien sont extraits.
Firebase Console fournit une interface visuelle pour créer des Dynamic Links. Le développeur spécifie l'URL du deep link, le nom de la campagne, les paramètres pour iOS et Android séparément, ainsi que les paramètres d'analytique. Après la création, Firebase génère un lien court comme https://yourcode.page.link/abc123, qui peut être utilisé dans des supports publicitaires, des campagnes par e-mail et les réseaux sociaux.
Pour la création programmatique de Dynamic Links, l'API REST Firebase ou le SDK client est utilisé. L'API REST permet de générer des liens en masse pour des campagnes marketing avec des paramètres personnalisés, y compris des liens pour les réseaux sociaux et une analytique asynchrone des clics. Lors de la création de liens via l'API, il est important de spécifier correctement les paramètres socialMetaTagInfo — ils déterminent comment le lien apparaît lorsqu'il est partagé dans les messageries et les réseaux sociaux avec une carte de prévisualisation.
| Paramètre | Objectif | Obligatoire |
|---|---|---|
| Deep Link URL | Lien interne vers le contenu de l'application | Oui |
| iOS Bundle ID | Identifiant de l'application dans l'App Store | Pour iOS |
| Android Package Name | Nom du package dans Google Play | Pour Android |
| Fallback URL | Page web si l'application n'est pas installée | Non |
| Balises UTM | Paramètres pour Google Analytics | Non |
Pour travailler avec Firebase Dynamic Links sur iOS, il faut intégrer le SDK Firebase via CocoaPods ou Swift Package Manager, configurer Info.plist avec GOOGLE_APP_ID et enregistrer le domaine Dynamic Links dans les Associated Domains du projet. Ensuite, l'application traite automatiquement les Universal Links générés par Firebase.
Dans Xcode, il faut ajouter la capacité Associated Domains avec une entrée comme applinks:yourcode.page.link. Le SDK Firebase utilise la méthode application(_:continue:restorationHandler:) pour traiter les Universal Links, donc aucune intégration supplémentaire avec AppDelegate n'est nécessaire — Firebase extrait automatiquement les paramètres du Dynamic Link de l'User Activity.
Exemple de configuration Info.plist pour une initialisation correcte de Firebase et l'enregistrement du gestionnaire de Dynamic Links. La clé FIROptions doit contenir l'identifiant du projet de GoogleService-Info.plist.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Si le proxy AppDelegate est désactivé, il faut appeler manuellement la méthode handleUniversalLink(_:) et passer l'User Activity depuis le continue NSUserActivity. Le SDK Firebase extrait automatiquement les paramètres du lien et retourne un DynamicLink via le completion handler.
Sur Android, l'intégration de Firebase Dynamic Links commence par l'ajout des dépendances dans build.gradle et du fichier google-services.json de Firebase Console. Le domaine Dynamic Links est enregistré dans Firebase Console, après quoi tous les liens avec ce domaine sont automatiquement reconnus par l'application Android via un Intent Filter avec action VIEW. Pour un fonctionnement correct, il faut également ajouter le plugin Google Services dans le build.gradle racine et du module, et effectuer la synchronisation Gradle.
Pour traiter correctement les liens sur Android, il faut ajouter un Intent Filter pour le domaine Dynamic Links dans l'Activity qui doit recevoir les liens entrants. Le filtre doit inclure le schéma https, l'hôte de votre domaine Dynamic Links et le chemin par défaut.
Exemple d'Intent Filter dans AndroidManifest.xml pour recevoir des Dynamic Links sur le domaine yourcode.page.link.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<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="yourcode.page.link" />
</intent-filter>
</activity>
Il est important de définir launchMode sur singleTask pour l'Activity qui reçoit les Dynamic Links. Cela empêche la création d'une nouvelle instance de l'Activity lors de clics répétés sur le lien et permet de traiter tous les deep links entrants dans une seule instance.
Le SDK Firebase pour Android fournit la méthode FirebaseDynamicLinks.getInstance().getDynamicLink(intent), qui retourne un objet PendingTask avec les données du lien. De l'objet DynamicLink sont extraits l'URI profond, les paramètres UTM et l'horodatage de la transition. Il est recommandé d'effectuer le traitement dans les méthodes onCreate() et onNewIntent() de l'Activity.
Lors du traitement, il est important de considérer qu'un Dynamic Link peut être reçu à la fois lors du lancement de l'application à partir d'un état froid (cold start) et lors de la transition depuis une autre application vers une application déjà en cours d'exécution. Pour le second cas, il faut surcharger onNewIntent() et rappeler la vérification du Dynamic Link.
Exemple de réception et de traitement d'un Firebase Dynamic Link dans MainActivity. Le code gère à la fois le cold start et la transition depuis une autre application.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
La méthode addOnSuccessListener retourne un DynamicLink, à partir duquel le lien cible est extrait via link?.link. Si le listener retourne null, cela signifie que l'Intent ne contient pas de Dynamic Link — c'est un lancement normal de l'application sans lien entrant. Les balises UTM pour l'analytique des clics sont également disponibles, y compris campaign, medium, source et content, qui peuvent être transmises à Google Analytics pour une évaluation détaillée de l'efficacité de chaque canal marketing.
Foire aux questions
Firebase Dynamic Links prend en charge le deferred deep link — le lien conserve le contexte même si l'application n'est pas installée. Après l'installation, l'application reçoit tous les paramètres de transition, ce qui est impossible avec les URL Scheme ou Universal Links classiques.
Firebase Dynamic Links sont inclus dans le forfait gratuit Firebase Spark. Il n'y a pas de limite sur le nombre de liens pouvant être créés. Cependant, depuis 2024, Google a annoncé la transition vers une nouvelle infrastructure, donc les conditions peuvent changer.
Les Dynamic Links sont conçus pour les applications mobiles. En cliquant sur le lien depuis un navigateur web de bureau, il ouvrira l'URL de fallback. Pour les applications web, utilisez des liens classiques ou votre propre logique de redirection.
Firebase Console fournit un bouton Test Dynamic Link pour prévisualiser le comportement. Vous pouvez également utiliser l'émulateur Android ou le simulateur iOS avec le SDK Firebase installé pour tester localement tous les scénarios de transition.
Un lien court Firebase Dynamic Link se compose du domaine page.link et d'un suffixe aléatoire d'environ 7 caractères. La longueur totale est d'environ 30 caractères. Le deep link interne peut être de n'importe quelle longueur, mais il est recommandé de le limiter à 2 Ko pour la compatibilité.
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