Passer des liens dynamiques aux liens vers une application Liens universels

Ce guide de migration se concentre sur l'utilisation de liens associés à l'application et de liens universels, et peut utiliser Firebase Hosting pour héberger vos fichiers d'association d'application et de site.

Cette migration remplace les fonctionnalités Firebase Dynamic Links suivantes:

Fonctionnalité Firebase Dynamic Links Liens vers une application / Liens universels
Rediriger les utilisateurs vers la plate-forme de téléchargement d'applications adaptée à leur appareil en un seul clic
Permettre aux utilisateurs de poursuivre leur parcours après avoir téléchargé et installé votre application à l'aide d'un lien profond différé
Offrez aux utilisateurs une expérience contextuelle à l'aide de contenus avec lien profond dans votre application (lorsqu'elle est déjà installée).
Fournir des données analytiques sur les événements de clic sur des liens dynamiques
Possibilité de créer des URL de liens courts

Si vous avez toujours besoin d'autres fonctionnalités Firebase Dynamic Links pour votre migration qui ne sont pas prises en charge dans ce guide, consultez d'autres scénarios de migration dans la documentation Questions fréquentes sur l'abandon de Dynamic Links.

Supposons que vous disposiez d'un lien Firebase Dynamic Links qui se présente comme suit:

Exemple de lien dynamique
Nom du lien Bienvenue sur Example.com
Lien profond https://example.web.app/welcome
Application Android com.example.android
Application Apple com.example.ios
Lien dynamique long https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Lien dynamique court https://example.page.link/m9Mm

L'objectif de ce guide de migration est de remplacer Firebase Dynamic Links comme suit:

https://example.page.link/m9Mm

Avec des liens profonds vers une application ou un lien universel qui se présentent comme suit:

https://your-project-domain.web.app/welcome

Notez que le lien profond vers l'application / le lien universel fournit les éléments suivants à vos utilisateurs:

  • Un lien profond sur lequel ils peuvent cliquer pour ouvrir votre application lorsqu'elle est déjà installée
  • Poursuite de son parcours utilisateur en le redirigeant vers une partie spécifique de votre application lorsqu'elle est ouverte

Toutefois, le lien profond vers l'application / le lien universel ne fournira pas les comportements suivants pour vos utilisateurs (comme le faisaient auparavant les liens dynamiques Firebase):

  • Rediriger les utilisateurs vers la plate-forme de téléchargement d'applications appropriée pour leur appareil afin qu'ils puissent télécharger et installer votre application
  • Poursuite du parcours utilisateur après le téléchargement, l'installation et l'ouverture de l'application pour la première fois

Notez les différences de comportement et de fonctionnalité de ces liens vers une application / liens universels par rapport aux liens dynamiques Firebase indiqués dans le tableau ci-dessus.

Avant de commencer

Firebase Dynamic Links utilise des liens associés à l'application (sur Android) et des liens universels (sur iOS) dans sa propre implémentation sous-jacente afin de fournir une fonctionnalité de lien profond une fois votre application installée.

Ce guide explique comment créer vos propres liens d'application et liens universels à l'aide de Firebase Hosting pour remplacer cette partie de la fonctionnalité fournie par Firebase Dynamic Links lors de la migration de vos liens dynamiques Firebase vers la nouvelle solution de migration des liens d'application / liens universels.

Vous aurez besoin des informations suivantes pour effectuer la migration:

  • Les Firebase Dynamic Links que vous souhaitez migrer
  • Les paramètres d'URL de lien profond inclus dans vos liens dynamiques
  • Le domaine que vous prévoyez d'utiliser pour remplacer votre ancien domaine Firebase Dynamic Links (le cas échéant)

Vous pouvez utiliser le guide d'exportation des métadonnées des liens dynamiques pour exporter vos métadonnées de lien existantes et obtenir les informations listées ci-dessus.

Présentation des étapes de migration

  1. Provisionnez un nouveau domaine (si vous n'en avez pas déjà un que vous souhaitez utiliser) pour héberger vos fichiers de configuration d'App Link / Lien universel à l'aide de Firebase Hosting.

  2. Créez et hébergez vos fichiers de configuration App Link / Universal Link sur votre domaine d'hébergement.

  3. Créez des liens d'application / liens universels correspondant au schéma de lien profond utilisé dans vos Firebase Dynamic Links.

  4. Mettez à jour vos applications Android / iOS et leur code pour recevoir des liens profonds.

  5. Tester l'intégration de vos liens App Links / Universal Links

  6. Remplacez vos liens dynamiques Firebase publiés ou partagés par des liens d'application et des liens universels.

La première étape est commune aux flux de migration des liens d'application ou des liens universels. Le reste varie en fonction de la plate-forme. Accédez donc à la section du guide ci-dessous en fonction de la plate-forme que vous souhaitez migrer en premier.

Choisir un domaine

La première étape consiste à choisir un domaine que vous souhaitez utiliser pour vos liens d'application/liens universels. Il s'agit du domaine qui sera utilisé pour les nouveaux liens que vous partagerez avec vos utilisateurs.

Si vous utilisez Firebase Hosting, les sous-domaines de projet au format your-project-domain.web.app ou your-project-domain.firebaseapp.com sont provisionnés automatiquement et sans frais. Vous pouvez également utiliser un domaine personnalisé avec ou sans Firebase Hosting pour héberger vos fichiers de configuration d'App Link / Lien universel.

Configurer Firebase Hosting

Ensuite, vous devez configurer votre instance Firebase Hosting.

Une fois que vous avez terminé de configurer votre instance Firebase Hosting, vous disposez d'un domaine semblable à your-project-domain.web.app ou d'un domaine personnalisé, si vous préférez.

Pour utiliser App Links, vous devez héberger un fichier de configuration qui permet d'établir une association sécurisée entre le domaine utilisé dans vos liens et votre application. Pour App Links, il s'agit du fichier assetlinks.json.

Étapes à suivre pour créer et héberger le fichier assetlinks.json

Le fichier assetlinks.json nous permet de fournir une liste d'applications autorisées pouvant gérer le contenu du domaine Web que nous utiliserons pour nos liens d'application. Le fichier assetlinks.json lui-même doit être hébergé à la racine du domaine Web sous le chemin d'accès suivant: /.well-known.

Pour effectuer cette configuration, procédez comme suit:

  1. Créez le dossier .well-known sous le dossier public dans le répertoire racine de Firebase Hosting.

  2. Créez un fichier nommé assetlinks.json dans le dossier .well-known.

  3. Copiez le contenu suivant dans votre fichier assetlinks.json, en notant la signification de chaque champ ci-dessous:

    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example.android",
        "sha256_cert_fingerprints":
          ["01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF"]
      }
    }]
    
    • namespace : fait référence au nom de l'application que vous souhaitez fournir
    • package_name : fait référence à l'applicationId déclaré dans le fichier build.gradle de l'application
    • sha256_cert_fingerprints : fait référence à l'empreinte SHA256 du fichier keystore que vous utilisez pour signer l'application.

    Vous pouvez utiliser le fichier debug.keystore utilisé par Android Studio pour générer un enregistrement sha256_cert_fingerprints à des fins de débogage. Vous trouverez le fichier à l'emplacement /Users/<username>/.android/debug.keystore sur Mac et Linux, et à l'emplacement C:\Users\<username>\.android\debug.keystore sous Windows.

    À partir de ce keystore, vous pouvez extraire la valeur SHA256 à l'aide de keytool.

    Pour en savoir plus sur cette étape, consultez cette section de la documentation sur les liens d'application.

    Vous pouvez également utiliser l'Assistant App Links dans Android Studio pour générer le contenu du fichier assetlinks.json et configurer votre application pour gérer App Links.

  4. Mettez à jour votre fichier firebase.json pour l'indexer à des fins d'hébergement.

    "headers": [
      {
        "source": "/.well-known/assetlinks.json",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Maintenant que le fichier assetlinks.json est en place, exécutez firebase deploy pour héberger les modifications.

    Notez que vous devez disposer de la CLI Firebase pour exécuter la commande de déploiement ci-dessus.

    firebase deploy --only hosting
    
  6. Vérifiez le fichier assetlinks.json en accédant à https://your-project-domain.web.app/.well-known/assetlinks.json.

À cette étape, vous allez recréer les liens profonds de vos liens dynamiques Firebase à l'aide d'URL de lien profond standards correspondant au nouveau domaine que vous avez créé pour vos liens d'application.

Par exemple, supposons que vous disposiez du Firebase Dynamic Link suivant:

Exemple de lien dynamique
Nom du lien Bienvenue sur Example.com
Lien profond https://example.web.app/welcome
Application Android com.example.android
Application Apple com.example.ios
Lien dynamique long https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Lien dynamique court https://example.page.link/m9Mm

Dans ce cas, vous devez extraire le paramètre de lien profond (par exemple, https://example.web.app/welcome) et l'utiliser comme paramètre d'App Link pour votre application.

Vous devrez répéter cette procédure pour chaque lien dynamique Firebase que vous souhaitez migrer vers des liens vers une application / des liens universels, et répliquer le schéma de lien profond que vous avez utilisé.

Par exemple, consultez l'ensemble suivant de liens courts Firebase Dynamic Links, de paramètres de lien profond et de valeurs de lien profond migrées:

Lien court Paramètre de lien profond Lien profond migré
votreapplication.page.lien/accueil https://example.com/welcome yourapp.web.app/welcome
votreapplication.page.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
votreapp.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

Ensuite, vous devrez remplacer toutes les instances de Firebase Dynamic Links publiées ou partagées par les nouveaux liens profonds migrés afin que les utilisateurs cliquent sur ces liens d'application au lieu des anciens Firebase Dynamic Links.

Après avoir sélectionné un domaine, choisi un schéma de liens profonds et migré vos Firebase Dynamic Links vers App Links, vous devez mettre à jour votre application Android et son code pour recevoir les nouveaux liens profonds.

Nous vous recommandons de suivre la documentation complète sur les liens d'application ou le guide Android Studio pour configurer votre application afin de gérer les liens profonds. Voici les principales étapes:

  1. Identifier les activités qui doivent gérer les liens profonds respectifs
  2. Ajouter un filtre d'intent pour ces activités dans votre fichier AndroidManifest.xml
  3. Recevoir le lien profond dans le code d'application de vos activités

Supposons que vous souhaitiez utiliser votre MainActivity pour gérer certains de vos liens profonds. Pour ce faire, vous devez ajouter le filtre d'intent suivant à MainActivity dans votre fichier AndroidManifest.xml:

<activity android:name=".MainActivity"
   android:exported="true">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   <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:host="example.web.app" android:scheme="http"
           android:pathPrefix="/welcome" />
       <data android:host="example.web.app" android:scheme="https"
           android:pathPrefix="/welcome" />
   </intent-filter>
</activity>

À cette étape, vous spécifiez que MainActivity est la destination pour gérer les liens profonds du domaine wxample.web.app, y compris le préfixe de chemin d'accès /welcome. Notez que vous devrez également spécifier l'attribut android:autoVerify="true", qui vous permet de désigner votre application comme gestionnaire par défaut pour ce type de lien.

Enfin, vous devrez ajouter le code dans votre MainActivity pour récupérer les données de lien profond et les utiliser pour générer l'expérience de lien profond dans votre application. Cela ressemble à la logique que vous avez peut-être déjà codée dans votre application lorsque vous l'avez intégrée à Firebase Dynamic Links.

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.main)

  val  data: Uri? = intent?.data

  val toast = Toast.makeText(this, data, duration)
  toast.show()
}

Vous pouvez tester les liens d'application que vous venez de créer en exécutant votre application sur un appareil physique ou dans Android Emulator.

Vous devrez créer un lien cliquable à l'aide du domaine configuré pour vos liens vers une application, puis cliquer dessus pour vous assurer qu'il s'ouvre dans votre application et vous redirige vers l'activité souhaitée.

Vous pouvez également tester votre intégration des liens vers une application à l'aide de l'assistant des liens vers une application dans Android Studio ou utiliser la commande suivante pour une URL de lien vers une application que vous avez configurée afin de vous assurer qu'elle lance correctement l'activité correspondante:

adb shell am start -a android.intent.action.VIEW -d <your_deep_link_url>

La dernière étape de la migration consiste à remplacer vos liens dynamiques Firebase publiés ou partagés par des liens d'application dans la mesure du possible et à continuer à utiliser les liens d'application à l'avenir.

La manière de procéder varie selon l'emplacement et la méthode de publication de vos Firebase Dynamic Links. Toutefois, pour vous aider à identifier ceux qui existent, vous pouvez exporter les métadonnées de vos Firebase Dynamic Links existantes. Consultez le guide d'exportation des métadonnées Dynamic Links.

Pour utiliser les liens universels, vous devez héberger un fichier de configuration qui permet d'établir une association sécurisée entre le domaine utilisé dans vos liens et votre application. Pour les liens universels, il s'agit du fichier apple-app-site-association (également appelé fichier AASA).

Étapes à suivre pour créer et héberger le fichier apple-app-site-association

Le fichier AASA nous permet de fournir une liste d'applications autorisées pouvant gérer le contenu du domaine Web que nous utiliserons pour nos liens universels. Le fichier AASA lui-même doit être hébergé à la racine du domaine Web, sous le chemin d'accès : /.well-known.

Pour effectuer cette configuration, procédez comme suit:

  1. Créez le dossier .well-known sous le dossier public dans le répertoire racine de Firebase Hosting.

  2. Créez un fichier nommé apple-app-site-association dans le dossier ".well-known".

  3. Copiez le contenu suivant dans votre fichier apple-app-site-association, en notant la signification de chaque champ ci-dessous:

    {
      "applinks": {
        "apps": [],
        "details": [
          {
            "appId": "$TEAM_ID.com.firebase.UniversalLinks",
            "paths": [
              "NOT /_/*",
              "/*"
            ]
          }
        ]
      }
    }
    
    • $TEAM_ID.BundleId : nom complet de l'application autorisée à gérer les liens
  4. Mettez à jour votre fichier firebase.json pour l'indexer à des fins d'hébergement.

    "headers": [
      {
        "source": "/.well-known/apple-app-site-association",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Maintenant que le fichier AASA est en place, effectuez un déploiement Firebase pour héberger les modifications.

  6. Vérifiez le fichier AASA en accédant à https://your-project-domain.web.app/.well-known/app-app-site-association.

À cette étape, vous allez recréer les liens profonds de vos liens dynamiques Firebase à l'aide d'URL de lien profond standards correspondant au nouveau domaine que vous avez créé pour vos liens universels.

Par exemple, imaginons que vous disposiez du Firebase Dynamic Link suivant:

Exemple de lien dynamique
Nom du lien Bienvenue sur Example.com
Lien profond https://example.web.app/welcome
Application Android com.example.android
Application Apple com.example.ios
Lien dynamique long https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Lien dynamique court https://example.page.link/m9Mm

Dans ce cas, vous devez extraire le paramètre de lien profond (par exemple, https://example.web.app/welcome) et l'utiliser comme paramètre de lien universel pour votre application.

Vous devrez répéter cette procédure pour chaque lien dynamique Firebase que vous souhaitez migrer vers des liens vers une application / des liens universels, et répliquer le schéma de lien profond que vous avez utilisé.

Par exemple, consultez l'ensemble suivant de liens courts Firebase Dynamic Links, de paramètres de lien profond et de valeurs de lien profond migrées:

Lien court Paramètre de lien profond Lien profond migré
votreapplication.page.lien/accueil https://example.com/welcome yourapp.web.app/welcome
votreapplication.page.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
votreapp.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

Ensuite, vous devrez remplacer toutes les instances de Firebase Dynamic Links publiées ou partagées par les nouveaux liens profonds migrés afin que les utilisateurs cliquent sur ces liens universels au lieu des anciens Firebase Dynamic Links.

Après avoir sélectionné un domaine, choisi un schéma de lien profond et migré vos Firebase Dynamic Links vers des liens universels, vous devez mettre à jour votre application iOS et son code pour recevoir les nouveaux liens profonds.

Nous vous recommandons de suivre la documentation complète sur les liens universels pour configurer votre application afin de gérer les liens profonds. Voici les étapes principales:

  1. Mettez à jour la configuration de votre projet pour permettre à votre application de gérer les liens profonds de votre nouveau domaine.

  2. Recevoir le lien profond dans le code de votre application

Pour mettre à jour la configuration de votre projet afin de permettre à votre application de gérer les liens profonds, vous devez ajouter un domaine associé supplémentaire à votre projet dans xCode pour le domaine que vous prévoyez d'utiliser pour héberger votre fichier apple-app-site-associate.

Pour ce faire, procédez comme suit:

  1. Ouvrir Xcode
  2. Sélectionner votre projet dans l'explorateur de fichiers
  3. Accédez à l'onglet "Signature et fonctionnalités" des paramètres de votre projet.
  4. Faites défiler la page jusqu'à la section "Domaines associés".
  5. Cliquez sur le bouton + pour ajouter le domaine supplémentaire à votre projet au format "applinks:".

Enfin, vous devez mettre à jour le code de votre application pour pouvoir recevoir les liens profonds entrants.

Pour ce faire, commencez par modifier le fichier AppDelegate.swift pour qu'il réponde à un lien universel en ajoutant le code suivant:

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  AppDelegate.showReceivedUrl(userActivity: userActivity);
  return true
}

static func showReceivedUrl(userActivity: NSUserActivity) {
  if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
    let url = userActivity.webpageURL!
    print(url.absoluteString)
}

Le code ci-dessus remplace la méthode de rappel du lien universel et consigne l'URL du lien profond, le cas échéant.

Nous allons maintenant appeler la même méthode showReceivedUrl à partir de la classe SceneDelegate, car si l'application est déjà ouverte au moment où l'utilisateur a cliqué sur le lien universel, le rappel du lien universel dans SceneDelegate sera celui qui sera appelé.

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
  AppDelegate.showReceivedUrl(userActivity: userActivity)
}

Vous pouvez tester les liens universels que vous venez de créer en exécutant votre application sur un appareil physique ou un simulateur.

Vous devrez créer un lien cliquable à l'aide du domaine configuré pour vos liens universels, puis cliquer dessus pour vous assurer qu'il s'ouvre dans votre application et vous redirige vers l'écran souhaité.

Prise en charge des bannières d'application intelligentes

Nous vous recommandons vivement d'utiliser les bannières d'application intelligentes pour offrir à vos utilisateurs une expérience semblable à celle de Firebase Dynamic Links.

Grâce aux bannières d'application intelligentes, vos utilisateurs seront redirigés vers la fiche Play Store de votre application s'ils ne l'ont pas déjà installée sur leur appareil. Vous pouvez également configurer un paramètre à transmettre à votre application après son téléchargement et son installation afin de permettre à vos utilisateurs de poursuivre leur parcours. Si votre application est déjà installée, elle s'ouvre et transmet le paramètre à votre application pour aider votre utilisateur à accéder au contenu approprié en fonction de la bannière d'application intelligente sur laquelle il a cliqué.

La dernière étape de la migration consiste à remplacer vos liens dynamiques Firebase publiés ou partagés par des liens universels dans la mesure du possible et à continuer à utiliser des liens universels à l'avenir.

La procédure à suivre pour effectuer cette étape varie selon l'emplacement et la méthode de publication de vos liens dynamiques Firebase.

Pour vous aider à suivre les Firebase Dynamic Links existants à migrer, nous publierons un guide sur l'exportation des métadonnées de vos liens courts à partir de Firebase Dynamic Links. Pour en savoir plus, consultez notre document de questions fréquentes sur l'abandon des liens dynamiques.