Créer des liens dynamiques dans une application Flutter

Vous pouvez créer des liens dynamiques courts ou longs avec l'API Firebase Dynamic Links Builder. Cette API accepte un lien dynamique long ou un objet contenant des paramètres de lien dynamique, et renvoie des URL comme les exemples suivants:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Avant de pouvoir créer des liens dynamiques dans votre application Android, vous devez inclure le SDK Firebase. Si votre application est configurée pour recevoir des liens dynamiques, vous avez déjà suivi ces étapes et vous pouvez ignorer cette section.

  1. Installez et initialisez les SDK Firebase pour Flutter si ce n'est pas déjà fait.

  2. Depuis le répertoire racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Si vous créez une application Android, ouvrez la page Project settings (Paramètres du projet) de la console Firebase et assurez-vous d'avoir spécifié votre clé de signature SHA-1. Si vous utilisez des liens d'application, spécifiez également votre clé SHA-256.

  4. Dans la console Firebase, ouvrez la section Liens dynamiques.

    1. Si vous n'avez pas encore configuré de domaine pour vos liens dynamiques, cliquez sur le bouton Commencer et suivez les instructions.

      Si vous possédez déjà un domaine de liens dynamiques, notez-le. Vous devez fournir un domaine Dynamic Links lorsque vous créez des liens dynamiques de manière automatisée.

    2. Recommandé: dans le menu "Plus" (⋮), indiquez les formats d'URL autorisés pour vos liens profonds et liens de remplacement. Vous empêchez ainsi des tiers non autorisés de créer des liens dynamiques qui redirigent de votre domaine vers des sites que vous ne contrôlez pas.

      Consultez Autoriser des modèles d'URL spécifiques.

Pour créer un lien dynamique, créez un objet DynamicLinkParameters et transmettez-le à buildLink() ou buildShortLink().

L'exemple minimal suivant crée un long lien dynamique vers https://www.example.com/ qui s'ouvre avec com.example.app.android sur Android et l'application com.example.app.ios sur iOS:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

Pour créer un lien dynamique court, transmettez l'objet DynamicLinkParameters à buildShortLink(). La création du lien court nécessite un appel réseau. Exemple :

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Par défaut, les liens dynamiques courts sont générés avec des suffixes ne comportant que quelques caractères. Bien que cela rende les liens plus compacts, il est également possible que quelqu'un devine un lien court valide. Souvent, il n'y a aucun mal à le faire, car le lien mène à des informations publiques.

Toutefois, si vos liens courts redirigent vers des informations spécifiques à l'utilisateur, vous devez créer des liens plus longs avec des suffixes de 17 caractères, ce qui rend très peu probable qu'un utilisateur puisse deviner un lien dynamique valide. Pour ce faire, transmettez ShortDynamicLinkType.unguessable à la méthode buildShortLink():

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

Vous pouvez utiliser l'API Dynamic Link Builder pour créer des liens dynamiques avec l'un des paramètres compatibles. Consultez la documentation de référence sur l'API.

L'exemple suivant crée un lien dynamique avec plusieurs paramètres courants définis:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Vous pouvez définir les paramètres de lien dynamique à l'aide des méthodes suivantes:

Paramètres DynamicLink
setLink Lien que votre application ouvrira. Spécifiez une URL que votre application peut gérer, généralement le contenu ou la charge utile de l'application, qui déclenche une logique spécifique à l'application (par exemple, attribuer un bon de réduction à l'utilisateur ou afficher un écran de bienvenue). Ce lien doit être une URL bien formatée, correctement encodée en URL, utiliser HTTP ou HTTPS, et ne pas être un autre lien dynamique.
setDomainUriPrefix Le préfixe de l'URL de votre lien dynamique, que vous trouverez dans la console Firebase. Un domaine de lien dynamique se présente comme suit:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl Lien à ouvrir lorsque l'application n'est pas installée. Spécifiez cette valeur pour effectuer une action autre que l'installation de votre application depuis le Play Store lorsque celle-ci n'est pas installée, par exemple ouvrir la version Web mobile du contenu ou afficher une page promotionnelle pour votre application.
setMinimumVersion Code de version de la version minimale de votre application pouvant ouvrir le lien. Si l'application installée est une version obsolète, l'utilisateur est redirigé vers le Play Store pour la mettre à niveau.
IosParameters
setAppStoreId ID App Store de votre application, utilisé pour rediriger les utilisateurs vers l'App Store lorsque l'application n'est pas installée
setFallbackUrl Lien à ouvrir lorsque l'application n'est pas installée. Spécifiez cette valeur pour effectuer une action autre que l'installation de votre application depuis l'App Store lorsqu'elle n'est pas installée, par exemple ouvrir la version Web mobile du contenu ou afficher une page promotionnelle pour votre application.
setCustomScheme Schéma d'URL personnalisé de votre application, s'il est défini comme autre chose que l'ID de bundle de votre application
setIpadFallbackUrl Lien à ouvrir sur les iPad lorsque l'application n'est pas installée. Spécifiez cette valeur pour effectuer une action autre que l'installation de votre application depuis l'App Store lorsque celle-ci n'est pas installée, par exemple ouvrir la version Web du contenu ou afficher une page promotionnelle pour votre application.
setIpadBundleId ID du bundle de l'application iOS à utiliser sur les iPad pour ouvrir le lien. L'application doit être associée à votre projet depuis la page "Vue d'ensemble" de la console Firebase.
setMinimumVersion Numéro de version de la version minimale de votre application pouvant ouvrir le lien. Cet indicateur est transmis à votre application lorsqu'elle est ouverte, et votre application doit décider quoi en faire.
NavigationInfoParameters
setForcedRedirectEnabled Si la valeur est définie sur "1", ignorez la page d'aperçu de l'application lorsque le lien dynamique est ouvert et redirigez plutôt vers l'application ou la plate-forme de téléchargement. La page d'aperçu de l'application (activée par défaut) peut rediriger les utilisateurs vers la destination la plus appropriée lorsqu'ils ouvrent des liens dynamiques dans des applications. Toutefois, si vous souhaitez qu'un lien dynamique ne s'ouvre que dans les applications qui peuvent l'ouvrir de manière fiable sans cette page, vous pouvez la désactiver à l'aide de ce paramètre. Ce paramètre n'affecte le comportement du lien dynamique que sur iOS.
SocialMetaTagParameters
setTitle Titre à utiliser lorsque le lien dynamique est partagé dans un post sur les réseaux sociaux.
setDescription Description à utiliser lorsque le lien dynamique est partagé dans un post sur les réseaux sociaux.
setImageUrl URL d'une image associée à ce lien. L'image doit faire au moins 300 x 200 pixels et être inférieure à 300 Ko.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Paramètres d'analyse Google Play Ces paramètres ("utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content") sont transmis au Play Store et ajoutés à la charge utile du lien.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Paramètres d'analyse iTunes Connect. Ces paramètres ("pt", "at", "ct") sont transmis à l'App Store.