Pour recevoir les liens dynamiques Firebase que vous avez créés , vous devez inclure le SDK Dynamic Links dans votre application et appeler les méthodes handleUniversalLink:
et dynamicLinkFromCustomSchemeURL:
lors du chargement de votre application pour obtenir les données transmises dans le lien dynamique.
Conditions préalables
Avant de commencer, assurez-vous d' ajouter Firebase à votre projet iOS .
Configurer Firebase et le SDK Dynamic Links
Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.
- Dans Xcode, avec votre projet d'application ouvert, accédez à File > Add Packages .
- Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Apple Firebase :
- Choisissez la bibliothèque Dynamic Links.
- Pour une expérience optimale avec les liens dynamiques, 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 collection IDFA ou avec collection IDFA.
- Une fois terminé, Xcode commencera automatiquement à résoudre et à télécharger vos dépendances en arrière-plan.
https://github.com/firebase/firebase-ios-sdk
Maintenant, effectuez quelques étapes de configuration :
- Dans la console Firebase , ouvrez la section Liens dynamiques . 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 et sélectionnez votre application iOS.
Vous pouvez confirmer que votre projet Firebase est correctement configuré pour utiliser les liens dynamiques dans votre application iOS en ouvrant l'URL suivante :
https://your_dynamic_links_domain/apple-app-site-association
Si votre application est connectée, le fichier
apple-app-site-association
contient une référence au préfixe d'ID d'application et à l'ID de bundle de votre application. Par exemple:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Si le champ
details
est 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 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, 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
surNO
.
Ouvrir les liens dynamiques dans votre application
- Dans l'onglet Infos du projet Xcode de votre application, créez un nouveau type d'URL à utiliser pour les liens dynamiques. Définissez le champ Identifiant sur une valeur unique et le champ Schéma d'URL sur votre identifiant de groupe, qui est le schéma d'URL par défaut utilisé par Dynamic Links.
- Dans l'onglet Capacités du projet Xcode de votre application, activez Domaines associés et ajoutez ce qui suit à la liste Domaines associés :
applinks:your_dynamic_links_domain
- Si vous souhaitez recevoir des liens dynamiques avec un domaine entièrement personnalisé , dans le fichier
Info.plist
de votre projet Xcode, créez une clé appeléeFirebaseDynamicLinksCustomDomains
et définissez-la sur les préfixes d'URL des liens dynamiques de votre application. Par exemple :FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importez le module
FirebaseCore
dans votreUIApplicationDelegate
, ainsi que tout autre module Firebase utilisé par votre délégué d'application. Par exemple, pour utiliser Cloud Firestore et Authentification :SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Rapide
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objectif c
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configurez une instance partagée
FirebaseApp
dans la méthodeapplication(_:didFinishLaunchingWithOptions:)
de votre délégué d'application :SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Rapide
// Use Firebase library to configure APIs FirebaseApp.configure()
Objectif 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'attacher à votre structure
App
viaUIApplicationDelegateAdaptor
ouNSApplicationDelegateAdaptor
. Vous devez également désactiver le swizzling des délégués d'application. Pour plus d'informations, 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
application:continueUserActivity:restorationHandler:
:, gérez les liens reçus en tant que liens universels lorsque l'application est déjà installée :Rapide
Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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 }
Objectif c
Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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<UIUserActivityRestoring>> *_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érer 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 lien dynamique n'est pas trouvé lors du premier lancement de votre application, cette méthode sera appelée avec l'
url
duDynamicLink
définie surnil
, indiquant que le SDK n'a pas réussi à trouver un lien dynamique en attente correspondant.Rapide
Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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 }
Objectif c
Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)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; }