Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

Recevez des liens dynamiques sur iOS

Pour recevoir les liens dynamiques Firebase que vous avez créés , vous devez inclure le SDK Dynamic Links dans votre application et appeler les handleUniversalLink: et dynamicLinkFromCustomSchemeURL: lorsque votre application se charge pour obtenir les données transmises dans le lien dynamique.

Conditions préalables

Firebase Dynamic Links nécessite iOS 8 ou plus récent. Vous pouvez cibler iOS 7 dans votre application, mais tous les appels du SDK Firebase Dynamic Links seront no-ops si l'application n'est pas exécutée sur iOS 8 ou plus récent.

  1. Ajoutez Firebase à votre projet iOS . Incluez le pod suivant dans votre Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  2. Exécutez l' pod install et ouvrez le fichier .xcworkspace créé.
  3. Dans la console Firebase , ouvrez la section Liens dynamiques . Acceptez les conditions d'utilisation si vous êtes invité à le faire.
  4. 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 vérifier 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 groupe de votre application. Par exemple:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    Si le champ de details est vide, vérifiez que vous avez spécifié votre préfixe d'ID d'application. Notez que le préfixe de votre ID d'application peut être différent de votre ID d'équipe.

  5. 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, les liens dynamiques peuvent 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 de la table de montage 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 .

  1. Dans l'onglet Info 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 les liens dynamiques.
  2. Dans l'onglet Capabilities du projet Xcode de votre application, activez les domaines associés et ajoutez ce qui suit à la liste des domaines associés :
    applinks:your_dynamic_links_domain
  3. 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ée FirebaseDynamicLinksCustomDomains et définissez-la sur les préfixes d'URL de liens dynamiques de votre application. Par exemple:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Importez le module Firebase dans votre UIApplicationDelegate :

    Rapide

    import Firebase

    Objectif c

    @import Firebase;
  5. Configurez une instance partagée FirebaseApp , généralement dans l'application de votre application:didFinishLaunchingWithOptions: method:

    Rapide

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objectif c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Ensuite, dans l' application:continueUserActivity:restorationHandler: method, gère les liens reçus en tant que liens universels lorsque l'application est déjà installée (sur iOS 9 et plus récent):

    Rapide

    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

    - (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;
    }
  7. Enfin, dans l' application:openURL:sourceApplication:annotation: (iOS 8 et plus ancien) et application:openURL:options: méthodes (iOS 9 et plus), gérez les liens reçus via le schéma d'URL personnalisé de votre application. Ces méthodes sont appelées lorsque votre application reçoit un lien sur iOS 8 et versions antérieures, et lorsque votre application est ouverte pour la première fois après l'installation sur n'importe quelle version d'iOS.

    Si le Dynamic Link ne se trouve pas sur le premier lancement de votre application (sur une version d'iOS), cette méthode sera appelée avec la FIRDynamicLink de url mis à nil , ce qui indique que le SDK n'a pas réussi à trouver un correspondant en attente Dynamic Link.

    Rapide

    @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

    - (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;
    }