Migrer de Dynamic Links vers App Links & Liens universels

Ce guide de migration se concentre sur l'utilisation d'App Links et d'Universal Links , en utilisant éventuellement Firebase Hosting pour héberger vos fichiers d'association application-site.

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

Fonctionnalité Liens dynamiques Firebase Liens d'application/liens universels
Dirigez les utilisateurs vers le magasin approprié pour leur appareil à partir d'un simple clic sur un lien
Offrez aux utilisateurs la poursuite du parcours après le téléchargement et l'installation de votre application à l'aide d'un lien profond différé
Offrez aux utilisateurs une expérience contextuelle en utilisant le contenu à liens profonds dans votre application (lorsqu'elle est déjà installée)
Fournir des données analytiques liées aux événements de clic sur un lien dynamique
Offrir la possibilité de créer des URL de liens courts

Si vous continuez à avoir besoin d'autres fonctionnalités Firebase Dynamic Link pour votre migration qui ne sont pas prises en charge dans ce guide, consultez d'autres scénarios de migration dans la documentation FAQ sur la dépréciation de Dynamic Links .

Supposons que vous disposiez d'un lien dynamique Firebase qui ressemble à ceci :

Exemple de lien dynamique
Nom du lien Bienvenue sur Exemple.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 les liens dynamiques Firebase comme ceci :

https://example.page.link/m9Mm

Avec des liens profonds App Link / Universal Link qui ressemblent à ceci :

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

Notez que le lien profond App Link/Universal Link fournira les éléments suivants à vos utilisateurs :

  • Un lien profond sur lequel ils peuvent cliquer et qui ouvrira votre application une fois déjà installée
  • Une suite de leur parcours utilisateur en les dirigeant vers une partie spécifique de votre application lors de son ouverture

Cependant, le lien profond App Link/Universal Link ne fournira pas les comportements suivants à vos utilisateurs (ce que Firebase Dynamic Links faisait auparavant) :

  • Diriger les utilisateurs vers le magasin approprié pour leur appareil afin de télécharger et d'installer votre application
  • Assurer la poursuite du parcours utilisateur après le téléchargement, l'installation et la première ouverture de l'application

Notez les différences de comportement et de fonctionnalité de ces App Links/Universal Links par rapport aux Firebase Dynamic Links mentionnées dans le tableau ci-dessus.

Avant que tu commences

Firebase Dynamic Links utilise App Links (sur Android) et Universal Links (sur iOS) dans sa propre implémentation sous-jacente afin de fournir une fonctionnalité de liens profonds une fois votre application déjà installée.

Ce guide explique comment créer vos propres App Links et Universal Links à l'aide de Firebase Hosting pour remplacer la partie des fonctionnalités fournies par Firebase Dynamic Links lors de la migration de vos Firebase Dynamic Links vers la nouvelle solution de migration App Links / Universal Links.

Vous aurez besoin des informations suivantes pour terminer votre migration :

  • Les liens dynamiques Firebase que vous souhaitez migrer
  • Les paramètres d'URL de liens profonds 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 Exporter les métadonnées de liens dynamiques pour exporter vos métadonnées de lien existantes et obtenir les informations répertorié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 App Link / Universal Link à 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 de nouveaux liens d'application/liens universels correspondant au schéma de liens profonds utilisé dans vos liens dynamiques Firebase.

  4. Mettez à jour vos applications Android/iOS et le code de votre application pour recevoir des liens profonds.

  5. Test de vos intégrations 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 sera commune aux flux de migration App Links ou Universal Link. Le reste varie en fonction de la plateforme, alors accédez à la section du guide ci-dessous en fonction de la plateforme que vous souhaitez migrer en premier.

Choisissez un domaine

La première étape consiste à choisir un domaine que vous souhaitez utiliser pour vos App Links / Universal Links. Ce sera le domaine qui sera utilisé pour les nouveaux liens que vous partagerez avec vos utilisateurs.

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

Configurer l'hébergement Firebase

Ensuite, vous devrez installer et configurer votre instance Firebase Hosting .

Une fois que vous aurez terminé de configurer votre instance Firebase Hosting, vous disposerez d'un domaine similaire au 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 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 App Links. Le fichier Assetlinks.json lui-même doit être hébergé à la racine du domaine Web sous le chemin : /.well-known .

Suivez les étapes ci-dessous pour terminer cette configuration :

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

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

  3. Copiez le contenu suivant dans votre fichier Assetlinks.json, en prenant note de 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 de clés 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 pouvez trouver le fichier dans /Users/<username>/.android/debug.keystore sur Mac et Linux et C:\Users\<username>\.android\debug.keystore sous Windows.

    À partir de ce magasin de clés, vous pouvez récupérer la valeur SHA256 à l'aide du keytool.

    Reportez-vous à cette section de la documentation App Links pour plus d'instructions sur la réalisation de cette étape.

    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 les App Links.

  4. Mettez à jour votre fichier firebase.json pour indexer le fichier pour l'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 devrez installer 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

Au cours de cette étape, vous allez recréer les liens profonds à partir de vos liens dynamiques Firebase en utilisant des URL de liens profonds classiques correspondant au nouveau domaine que vous avez créé pour vos liens d'application.

Par exemple, disons que vous disposez du lien dynamique Firebase suivant :

Exemple de lien dynamique
Nom du lien Bienvenue sur Exemple.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 extrairez le paramètre de lien profond - c'est-à-dire https://example.web.app/welcome et l'utiliserez désormais comme paramètre App Link pour votre application.

Vous souhaiterez répéter ce processus pour chaque lien dynamique Firebase vers lequel vous souhaitez migrer à l'aide d'App Links/Universal Links et répliquer le schéma de liens profonds que vous avez utilisé.

Par exemple, veuillez consulter l'ensemble suivant de liens courts Firebase Dynamic Links, de paramètres de liens profonds et de valeurs de liens profonds migrés :

Lien court Paramètre de lien profond Lien profond migré
votreapp.page.link/welcome https://exemple.com/bienvenue votreapp.web.app/welcome
votreapp.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 liens dynamiques Firebase qui ont été 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 liens dynamiques Firebase précédents.

L'étape suivante après la sélection d'un domaine, le choix d'un schéma de liens profonds et la migration de vos liens dynamiques Firebase vers App Links consiste à mettre à jour votre application Android et le code de votre application pour recevoir les nouveaux liens profonds.

Nous vous recommandons de suivre la documentation complète d'App Links ici ou bien le guide Android Studio sur la configuration de votre application pour gérer les liens profonds, mais les principales étapes incluent :

  1. Identifier les activités qui doivent gérer les liens profonds respectifs
  2. Ajout d'un filtre d'intention pour ces activités dans votre fichier AndroidManifest.xml
  3. Réception du lien profond dans le code applicatif de vos activités

Disons que vous souhaitiez utiliser votre MainActivity pour gérer certains de vos liens profonds. Pour ce faire, vous devrez ajouter le filtre d'intention 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>

Dans cette étape, vous spécifiez que MainActivity est la destination de gestion des liens profonds du domaine wxample.web.app et qu'elle inclut le préfixe de chemin /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 donné.

Enfin, vous devrez ajouter le code dans votre MainActivity pour récupérer les données de lien profond et les utiliser pour piloter l'expérience de lien profond dans votre application. Ceci est similaire à la logique que vous avez peut-être déjà codée dans votre application lors de l'intégration de 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 App Links que vous venez de créer en exécutant votre application sur un appareil physique ou dans l' émulateur Android .

Vous devrez créer un lien cliquable à l'aide du domaine configuré pour vos liens d'application, puis cliquer sur ce lien pour vous assurer qu'il s'ouvre dans votre application et vous dirige vers l'activité prévue.

Vous pouvez également tester votre intégration App Links à l'aide de l' Assistant App Links dans Android Studio, ou utiliser la commande suivante pour une URL App Link que vous avez configurée afin de vous assurer qu'elle lance correctement l'activité de correspondance :

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

La dernière étape de votre migration consistera à 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 réalisation de cette étape varie en fonction de l'endroit et de la manière dont vous publiez vos liens dynamiques Firebase, mais pour vous aider à suivre lesquels existent, vous pouvez exporter vos métadonnées Firebase Dynamic Link existantes. Consultez le guide Exporter les métadonnées de liens dynamiques .

Pour utiliser Universal 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 les liens universels, il s'agit du fichier apple-app-site-association (également connu sous le nom de fichier AASA).

Étapes pour créer et héberger le fichier apple-app-site-associaton

Le fichier AASA nous permet de fournir une liste d'applications autorisées capables de 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 : /.well-known.

Suivez les étapes ci-dessous pour terminer cette configuration :

  1. Créez le dossier " .well-known " sous le dossier public dans le répertoire racine de votre hébergement Firebase.

  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 prenant note de la signification de chaque champ ci-dessous :

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

    "headers": [
      {
        "source": "/.well-known/apple-app-site-association",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Maintenant que nous avons le fichier AASA en place, effectuez le 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

Au cours de cette étape, vous allez recréer les liens profonds à partir de vos liens dynamiques Firebase en utilisant des URL de liens profonds classiques correspondant au nouveau domaine que vous avez créé pour vos liens universels.

Par exemple, disons que vous disposez du lien dynamique Firebase suivant :

Exemple de lien dynamique
Nom du lien Bienvenue sur Exemple.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 extrairez le paramètre de lien profond - c'est-à-dire https://example.web.app/welcome et l'utiliserez désormais comme paramètre de lien universel pour votre application.

Vous souhaiterez répéter ce processus pour chaque lien dynamique Firebase vers lequel vous souhaitez migrer à l'aide d'App Links/Universal Links et répliquer le schéma de liens profonds que vous avez utilisé.

Par exemple, veuillez consulter l'ensemble suivant de liens courts Firebase Dynamic Links, de paramètres de liens profonds et de valeurs de liens profonds migrés :

Lien court Paramètre de lien profond Lien profond migré
votreapp.page.link/welcome https://exemple.com/bienvenue votreapp.web.app/welcome
votreapp.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 liens dynamiques Firebase qui ont été publiées ou partagées par les nouveaux liens profonds migrés afin que les utilisateurs cliquent sur ces liens universels au lieu des liens dynamiques Firebase précédents.

L'étape suivante après la sélection d'un domaine, le choix d'un schéma de liens profonds et la migration de vos liens dynamiques Firebase vers des liens universels consiste à mettre à jour votre application iOS et le code de votre application pour recevoir les nouveaux liens profonds.

Nous vous recommandons de suivre la documentation complète sur les liens universels ici pour configurer votre application pour gérer les liens profonds, mais les principales étapes incluent :

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

  2. Recevez le lien profond dans votre code d'application

Afin de mettre à jour la configuration de votre projet afin de permettre à votre application de gérer les liens profonds, vous devrez ajouter un domaine associé supplémentaire à votre projet dans xCode pour le domaine que vous envisagez maintenant d'utiliser pour héberger votre site d'application Apple. fichier associé.

Cela peut être fait par :

  1. Ouverture de Xcode
  2. Sélection de votre projet dans le navigateur de fichiers
  3. Accédez à l'onglet Signature et capacités des paramètres de votre projet
  4. Accédez à la section Domaines associés
  5. En cliquant 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, mettez d'abord à jour le fichier AppDelegate.swift pour répondre à 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 Universal Link et enregistre l'URL du lien profond, le cas échéant.

Nous allons maintenant appeler également la même méthode showReceivedUrl 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 de lien universel à l'intérieur SceneDelegate sera celui qui sera invoqué.

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 sur un simulateur .

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

Prise en charge des bannières d'applications intelligentes

Nous vous recommandons fortement d'utiliser les bannières d'applications intelligentes afin d'offrir à vos utilisateurs une expérience similaire à Firebase Dynamic Links.

Grâce aux bannières d'applications intelligentes, vos utilisateurs seront redirigés vers l'App Store pour consulter la liste de vos applications si votre application n'est pas déjà installée sur leur appareil. Vous pouvez également éventuellement configurer un paramètre à transmettre à votre application une fois celle-ci téléchargée et installée afin de permettre à vos utilisateurs de poursuivre leur parcours. Si votre application est déjà installée, elle s'ouvrira en transmettant le paramètre à votre application pour aider votre utilisateur à naviguer vers le contenu approprié en fonction de la bannière d'application intelligente sur laquelle il a cliqué.

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

La réalisation de cette étape varie en fonction de l'endroit et de la manière dont vous publiez vos liens dynamiques Firebase.

Pour vous aider à suivre les Firebase Dynamic Links existants à migrer, nous publierons un guide sur la façon d'exporter vos métadonnées de liens courts à partir de Firebase Dynamic Links. Veuillez consulter notre document FAQ sur la dépréciation des liens dynamiques pour plus de mises à jour.