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.
Configurer Firebase et le SDK Dynamic Links
Installez et initialisez les SDK Firebase pour Flutter si vous ne l'avez pas déjà fait.
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
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 App Links, 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 requis pour que votre application reçoive les données Dynamic Link après son installation/mise à jour à partir du Play Store et en appuyant 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.
L'étape suivante consiste à s'assurer que l'empreinte digitale SHA-256 du certificat de signature est enregistrée dans la console Firebase de l'application. Vous pouvez trouver plus de détails sur la façon de récupérer votre empreinte digitale SHA-256 sur la page Authentification de votre client .
Plateformes Apple
Créez un compte développeur Apple si vous n'en avez pas déjà un.
Sur la page Paramètres du projet de la console Firebase, assurez-vous que votre application iOS est correctement configurée avec votre identifiant App Store et votre identifiant d'équipe.
Sur le site Apple Developer, créez un profil de provisionnement pour votre application avec la fonctionnalité de domaine associé activée.
Dans Xcode, procédez comme suit :
Ouvrez votre application sous l'en-tête TARGETS .
Sur la page Signature et capacités, assurez-vous que votre équipe est enregistrée et que votre profil de provisionnement est défini.
Sur la page Signature et capacités, activez Domaines associés et ajoutez ce qui suit à la liste Domaines associés (remplacez l'exemple par votre domaine) :
applinks:example.page.link
Sur la page Informations, 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 ce que vous souhaitez.)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>
Facultatif : désactivez l'utilisation du presse-papier iOS par le SDK Dynamic Links.
Par défaut, le SDK Dynamic Links utilise le presse-papiers pour améliorer la fiabilité des liens profonds post-installation. En utilisant le presse-papiers, Dynamic Links peut garantir que lorsqu'un utilisateur ouvre un Dynamic Link 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 le presse-papiers contient une URL de lien dynamique, ils verront une notification indiquant que votre application a accédé au presse-papiers, 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
surNO
.
Gérer les liens profonds
Pour gérer un Dynamic Link dans votre application, deux scénarios nécessitent la mise en œuvre.
État terminé
Configurez les méthodes suivantes :
-
FirebaseDynamicLinks.getInitialLink
- renvoie unFuture<PendingDynamicLinkData?>
-
FirebaseDynamicLinks.onLink
- gestionnaire d'événements qui renvoie unStream
contenant unPendingDynamicLinkData?
Android recevra toujours le lien via FirebaseDynamicLinks.getInitialLink
à partir d'un état terminé, mais sur iOS, cela n'est pas garanti. Par conséquent, il vaut la peine de les configurer tous les deux dans l’ordre suivant pour garantir que votre candidature reçoive le lien :
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Check if you received the link via `getInitialLink` first
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
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);
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
// Set up the `onLink` event listener next as it may be received here
if (pendingDynamicLinkData != null) {
final Uri deepLink = pendingDynamicLinkData.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
},
);
runApp(MyApp(initialLink));
}
Dans la logique de votre application, vous pouvez alors vérifier si un lien a été géré 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);
}
État d’arrière-plan/premier plan
Lorsque l'application est ouverte ou en arrière-plan, utilisez le getter FirebaseDynamicLinks.onLink
:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Alternativement, 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));
Tester un lien dynamique sur la plateforme iOS
Pour tester un lien dynamique sur iOS, vous devez utiliser un appareil réel. Vous devrez également exécuter l'application en mode release (c'est-à-dire flutter run --release
.), si vous testez un lien dynamique à partir d'un état d'application terminé (c'est-à-dire que l'application a été fermée par glissement).