Pour recevoir les Firebase Dynamic Links que
vous avez créés, vous devez inclure le SDK Dynamic Links dans votre application et appeler les
handleUniversalLink: et dynamicLinkFromCustomSchemeURL:
méthodes lorsque votre application se charge pour obtenir les données transmises dans le Dynamic Link.
Prérequis
Avant de commencer, assurez-vous d'ajouter Firebase à votre projet iOS project.
Configurer Firebase et le Dynamic Links SDK
Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.
- Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Packages (Fichier > Ajouter des packages).
- Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
- Choisissez la Dynamic Links bibliothèque.
- Ajoutez l'indicateur
-ObjCà la section Other Linker Flags (Autres indicateurs Linker) des paramètres de compilation de votre cible. - Pour une expérience optimale avec Dynamic Links, nous vous recommandons d'activer Google Analytics dans votre projet Firebase et d'ajouter le SDK Firebase pour Google Analytics à votre application. Vous pouvez sélectionner la bibliothèque sans collecte d'IDFA ou avec collecte d'IDFA. Consultez nos questions fréquentes sur la dernière organisation des modules dans le Google Analytics pour SDK Firebase.
- Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.
https://github.com/firebase/firebase-ios-sdk.git
Effectuez maintenant quelques étapes de configuration :
- Dans la Firebase console, ouvrez la Dynamic Links section. Acceptez les conditions d'utilisation si vous y êtes invité.
-
Assurez-vous que l'ID App Store de votre application et le préfixe de votre ID d'application sont spécifiés dans les paramètres de votre application. Pour afficher et modifier les paramètres de votre application, accédez à la page Paramètres de votre projet Firebase, puis sélectionnez votre application iOS.
Pour vérifier que votre projet Firebase est correctement configuré pour utiliser Dynamic Links dans votre application iOS, ouvrez l'URL suivante :
https://your_dynamic_links_domain/apple-app-site-association
Si votre application est connectée, le fichier
apple-app-site-associationcontient une référence au préfixe de l'ID d'application et à l'ID du bundle de votre application. Exemple :{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}Si le champ
detailsest vide, vérifiez que vous avez spécifié le préfixe de votre ID d'application. Notez que le préfixe de votre ID d'application peut être différent de votre ID d'équipe. -
Facultatif : Désactivez l'utilisation du presse-papiers iOS par le SDK Dynamic Links.
Par défaut, le Dynamic Links SDK utilise le presse-papiers pour améliorer la fiabilité des liens profonds post-installation. En utilisant le presse-papiers, Dynamic Links peut s'assurer que lorsqu'un utilisateur ouvre un Dynamic Link mais qu'il doit d'abord installer votre application, il peut accéder immédiatement au contenu lié d'origine lorsqu'il ouvre l'application pour la première fois après l'installation.
L'inconvénient est que l'utilisation du presse-papiers 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, ils verront une notification indiquant que votre application a accédé au presse-papiers, ce qui peut être source de confusion.
Pour désactiver ce comportement, modifiez le fichier
Info.plistde votre projet Xcode et définissez la cléFirebaseDeepLinkPasteboardRetrievalEnabledsurNO.
Ouvrir Dynamic Links dans votre application
- Dans l'onglet Info du projet Xcode de votre application, créez un nouveau type d'URL à utiliser pour les Dynamic Links. Définissez le le champ Identifier (Identifiant) sur une valeur unique et le champ URL scheme (Schéma d'URL) sur votre identifiant du bundle, qui est le schéma d'URL par défaut utilisé par Dynamic Links.
- Dans l'onglet Capabilities (Fonctionnalités) du projet Xcode de votre application,
activez les domaines associés et ajoutez les éléments suivants à la liste Associated
Domains (Domaines associés) :
applinks:your_dynamic_links_domain
- Si vous souhaitez recevoir des Dynamic Links avec un
domaine entièrement personnalisé, dans
le fichier
Info.plistde votre projet Xcode, créez une clé appeléeFirebaseDynamicLinksCustomDomainset définissez-la sur les préfixes d'URL Dynamic Links de votre application. Exemple :FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importez le module
FirebaseCoredans votreUIApplicationDelegate, ainsi que tous les autres modules Firebase utilisés par le délégué de votre application. Par exemple, pour utiliser Cloud Firestore et Authentication :SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configurez une
FirebaseAppinstance partagée dans la méthodeapplication(_:didFinishLaunchingWithOptions:)du délégué de votre application :SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Si vous utilisez SwiftUI, vous devez créer un délégué d'application et l'associer
à votre
Appstructure viaUIApplicationDelegateAdaptorouNSApplicationDelegateAdaptor. Vous devez également désactiver le swizzling du délégué d'application. Pour en savoir plus, consultez les instructions SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Ensuite, dans la méthode
application:continueUserActivity:restorationHandler:, gérez les liens reçus en tant que liens universels lorsque l'application est déjà installée :Swift
Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ni watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objective-C
Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ni watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id
> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; } - Enfin, dans
application:openURL:options:gérez les liens reçus via le schéma d'URL personnalisé de votre application. Cette méthode est appelée lorsque votre application est ouverte pour la première fois après l'installation.Si le Dynamic Link n'est pas trouvé lors du premier lancement de votre application, cette méthode est appelée avec l'élément
DynamicLink'surldéfini surnil, ce qui indique que le SDK n'a pas trouvé de Dynamic Link en attente correspondant.Swift
Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ni watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Objective-C
Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ni watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
*)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }