Recevoir des liens dynamiques Firebase dans une application Flutter

Pour recevoir les liens dynamiques Firebase que vous avez créés , vous devez inclure le SDK Dynamic Links dans votre application et appeler la méthode FirebaseDynamicLinks.getDynamicLink() lors du chargement de votre application pour obtenir les données transmises dans le lien dynamique.

  1. Installez et initialisez les SDK Firebase pour Flutter si vous ne l'avez pas déjà fait.

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

    flutter pub add firebase_dynamic_links
    
  3. Si vous créez une application Android, ouvrez la page 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.

Intégration de plateforme

Effectuez les étapes d'intégration de plateforme suivantes pour les plateformes pour lesquelles vous créez votre application.

Android

Sur Android, vous devez ajouter un nouveau filtre d'intention pour capturer les liens profonds de votre domaine, car le lien dynamique redirigera vers votre domaine si votre application est installée. Ceci est nécessaire pour que votre application reçoive les données Dynamic Link après son installation/mise à jour à partir du Play Store et une pression sur le bouton Continuer. Dans AndroidManifest.xml :

<intent-filter>
    <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.com"
        android:scheme="https"/>
</intent-filter>

Lorsque les utilisateurs ouvrent un lien dynamique avec un lien profond vers le schéma et l'hôte que vous spécifiez, votre application démarre l'activité avec ce filtre d'intention pour gérer le lien.

Plateformes Apple

  1. Créez un compte développeur Apple si vous n'en avez pas déjà un.

  2. Sur la page Paramètres du projet de la console Firebase, assurez-vous que votre application iOS est correctement configurée avec votre ID App Store et votre ID d'équipe.

  3. Sur le site Apple Developer, créez un profil d'approvisionnement pour votre application avec la fonctionnalité Domaine associé activée.

  4. Dans Xcode, procédez comme suit :

    1. Ouvrez votre application sous l'en-tête TARGETS .

    2. Sur la page Signature et capacités, assurez-vous que votre équipe est enregistrée et que votre profil de provisionnement est défini.

    3. Ajoutez le domaine que vous avez créé dans la console Firebase aux Domaines associés, précédé de applinks: (par exemple, applinks:example.page.link ).

    4. Sur la page Info, ajoutez un type d'URL à votre projet. Définissez le champ Schémas d'URL sur l'ID de bundle de votre application. (L'identifiant peut être Bundle ID ou tout ce que vous souhaitez.)

    5. Si vous avez configuré un domaine personnalisé pour votre projet Firebase, ajoutez le préfixe d'URL Dynamic Link dans le fichier Info.plist de votre projet iOS à l'aide de la clé FirebaseDynamicLinksCustomDomains .

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. Facultatif : désactivez l'utilisation de la table de montage iOS par le SDK Dynamic Links.

      Par défaut, le SDK Dynamic Links utilise la table de montage pour améliorer la fiabilité des liens profonds post-installation. En utilisant la table de montage, Dynamic Links peut s'assurer que lorsqu'un utilisateur ouvre un lien dynamique mais doit d'abord installer votre application, l'utilisateur peut accéder immédiatement au contenu lié d'origine lors de la première ouverture de l'application après l'installation.

      L'inconvénient est que l'utilisation du presse-papier déclenche une notification sur iOS 14 et versions ultérieures. Ainsi, la première fois que les utilisateurs ouvrent votre application, si la table de montage contient une URL de lien dynamique, ils verront une notification indiquant que votre application a accédé à la table de montage, ce qui peut prêter à confusion.

      Pour désactiver ce comportement, modifiez le fichier Info.plist de votre projet Xcode et définissez la clé FirebaseDeepLinkPasteboardRetrievalEnabled sur NO .

Pour gérer un lien dynamique dans votre application, deux scénarios doivent être mis en œuvre.

État terminé

Si l'application est fermée, la méthode FirebaseDynamicLinks.getInitialLink permet de récupérer le lien dynamique qui a ouvert l'application.

Il s'agit d'une requête asynchrone, il est donc logique de gérer un lien avant de rendre la logique de l'application, telle qu'un navigateur. Par exemple, vous pouvez gérer cela dans la fonction main :

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  runApp(MyApp(initialLink));
}

Dans votre logique applicative, vous pouvez alors vérifier si un lien a été traité et effectuer une action, par exemple :

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

Sinon, si vous souhaitez identifier si un lien dynamique exact a été utilisé pour ouvrir l'application, transmettez-le plutôt à la méthode getDynamicLink :

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Arrière-plan / État de premier plan

Lorsque l'application est ouverte ou en arrière-plan, vous pouvez écouter les événements Dynamic Links à l'aide d'un gestionnaire de flux. Le getter FirebaseDynamicLinks.onLink renvoie un Stream contenant un PendingDynamicLinkData :

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});