Créer des liens dynamiques sur iOS

Vous pouvez créer des liens dynamiques courts ou longs avec l'API Firebase Dynamic Links Builder. Cette API accepte soit un lien dynamique long, soit un objet contenant des paramètres de lien dynamique, et renvoie des URL comme dans les exemples suivants :

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Conditions préalables

Avant de commencer, assurez-vous d' ajouter Firebase à votre projet iOS .

Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.

  1. Dans Xcode, avec votre projet d'application ouvert, accédez à File > Add Packages .
  2. Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Apple Firebase :
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Choisissez la bibliothèque Dynamic Links.
  5. 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.
  6. Une fois terminé, Xcode commencera automatiquement à résoudre et à télécharger vos dépendances en arrière-plan.

Maintenant, effectuez quelques étapes de configuration :

  1. Dans la console Firebase, ouvrez la section Liens dynamiques .
  2. Si vous n'avez pas encore accepté les conditions d'utilisation et défini un préfixe URI pour vos liens dynamiques, faites-le lorsque vous y êtes invité.

    Si vous avez déjà un préfixe URI Dynamic Links, notez-le. Vous devez le fournir lorsque vous créez des liens dynamiques par programmation.

  3. Recommandé : spécifiez les modèles d'URL autorisés dans vos liens profonds et vos liens de secours. Ce faisant, vous empêchez des parties non autorisées de créer des liens dynamiques qui redirigent depuis votre domaine vers des sites que vous ne contrôlez pas. Voir Autoriser des modèles d'URL spécifiques .
  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.

    Confirmez que votre projet Firebase est correctement configuré pour utiliser Dynamic Links dans votre application iOS en ouvrant le fichier apple-app-site-association qui est hébergé sur votre domaine Dynamic Links. Firebase servira le fichier apple-app-site-association à partir de la racine du domaine ainsi que le sous-répertoire .well-known . Par exemple:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/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":["/*"]}]}}

    Si la propriété 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.

Ajouter Firebase à votre application

  1. Importez le module FirebaseCore dans votre UIApplicationDelegate , ainsi que tout autre module Firebase utilisé par votre délégué d'application. Par exemple, pour utiliser Cloud Firestore et Authentification :

    Rapide

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objectif c

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configurez une instance partagée FirebaseApp , généralement dans la méthode application(_:didFinishLaunchingWithOptions:) de l'initialisateur de votre App ou du délégué d'application :

    Rapide

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

    Objectif c

    // Use Firebase library to configure APIs
    [FIRApp configure];

Utiliser la console Firebase

Si vous souhaitez générer un seul lien dynamique, soit à des fins de test, soit pour que votre équipe marketing crée facilement un lien pouvant être utilisé dans quelque chose comme une publication sur les réseaux sociaux, le moyen le plus simple serait de visiter la console Firebase et d'en créer un. manuellement en suivant le formulaire étape par étape.

Utiliser l'API iOS Builder

Vous pouvez utiliser l'API iOS Builder pour créer des liens dynamiques à partir de paramètres ou pour raccourcir un long lien dynamique.

Pour créer un lien dynamique, créez un nouvel objet DynamicLinkComponents et spécifiez les paramètres du lien dynamique en définissant les propriétés correspondantes de l'objet. Ensuite, récupérez le lien long à partir de la propriété url de l'objet ou récupérez le lien court en appelant shorten() .

L'exemple minimal suivant crée un long lien dynamique vers https://www.example.com/my-page qui s'ouvre avec votre application iOS sur iOS et l'application com.example.android sur Android :

Rapide

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objectif c

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                               domainURIPrefix:dynamicLinksDomainURIPrefix];
linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];

NSLog(@"The long URL is: %@", linkBuilder.url);

Pour créer un lien dynamique court, créez un DynamicLinkComponents de la même manière, puis appelez shorten() .

La construction d'un lien court nécessite un appel réseau, donc au lieu de renvoyer directement le lien, shorten() accepte un gestionnaire d'achèvement, qui est appelé lorsque la requête se termine. Par exemple:

Rapide

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objectif c

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Par défaut, les liens dynamiques courts sont générés avec des suffixes de lien de 17 caractères qui rendent extrêmement improbable que quelqu'un puisse deviner un lien dynamique valide. Si, pour votre cas d'utilisation, il n'y a aucun mal à ce que quelqu'un réussisse à deviner un lien court, vous préférerez peut-être générer des suffixes qui ne durent que le temps nécessaire pour être uniques, ce que vous pouvez faire en définissant la propriété dynamicLinkComponentsOptions :

Rapide

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
linkBuilder.options = DynamicLinkComponentsOptions()
linkBuilder.options.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objectif c

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init];
linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort;
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Vous pouvez utiliser l'API Dynamic Link Builder pour créer des liens dynamiques avec n'importe lequel des paramètres pris en charge. Voir la référence de l'API pour plus de détails.

L'exemple suivant crée un lien dynamique avec plusieurs paramètres communs définis :

Rapide

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix)

linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.iOSParameters.appStoreID = "123456789"
linkBuilder.iOSParameters.minimumAppVersion = "1.2.3"

linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
linkBuilder.androidParameters.minimumVersion = 123

linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut",
                                                                       medium: "social",
                                                                       campaign: "example-promo")

linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters()
linkBuilder.iTunesConnectParameters.providerToken = "123456"
linkBuilder.iTunesConnectParameters.campaignToken = "example-promo"

linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters()
linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link"
linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!"
linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg"

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objectif c

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                         domainURIPrefix:dynamicLinksDomainURIPrefix];

linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.iOSParameters.appStoreID = @"123456789";
linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3";

linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];
linkBuilder.androidParameters.minimumVersion = 123;

linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc]
                                   initWithSource:@"orkut"
                                           medium:@"social"
                                         campaign:@"example-promo"];

linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init];
linkBuilder.iTunesConnectParameters.providerToken = @"123456";
linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo";

linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init];
linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link";
linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!";
linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg";

NSLog(@"The long URL is: %@", linkBuilder.url);

Vous pouvez définir les paramètres Dynamic Link avec les objets et propriétés suivants :

Composants DynamicLink
lien

Le lien que votre application ouvrira. Spécifiez une URL que votre application peut gérer, généralement le contenu ou la charge utile de l'application, qui lance une logique spécifique à l'application (telle que créditer l'utilisateur d'un coupon ou afficher un écran de bienvenue). Ce lien doit être une URL bien formatée, être correctement codé en URL, utiliser HTTP ou HTTPS et ne peut pas être un autre lien dynamique.

domaineURIPrefix Votre préfixe d'URL Dynamic Link, que vous pouvez trouver dans la console Firebase. Un domaine Dynamic Link ressemble aux exemples suivants :
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
URL de remplacement Le lien à ouvrir lorsque l'application n'est pas installée. Spécifiez ceci pour faire autre chose que d'installer votre application à partir du Play Store lorsque l'application n'est pas installée, comme ouvrir la version Web mobile du contenu ou afficher une page promotionnelle pour votre application.
version minimale Le versionCode de la version minimale de votre application qui peut ouvrir le lien. Si l'application installée est une version plus ancienne, l'utilisateur est redirigé vers le Play Store pour mettre à niveau l'application.
DynamicLinkIOSParameters
appStoreID L'identifiant App Store de votre application, utilisé pour envoyer les utilisateurs vers l'App Store lorsque l'application n'est pas installée
URL de remplacement Le lien à ouvrir lorsque l'application n'est pas installée. Spécifiez ceci pour faire autre chose que d'installer votre application à partir de l'App Store lorsque l'application n'est pas installée, comme ouvrir la version Web mobile du contenu ou afficher une page promotionnelle pour votre application.
schéma personnalisé Le schéma d'URL personnalisé de votre application, s'il est défini comme autre chose que l'ID de groupe de votre application
URL de secours iPad Le lien à ouvrir sur les iPads lorsque l'application n'est pas installée. Spécifiez ceci pour faire autre chose que d'installer votre application à partir de l'App Store lorsque l'application n'est pas installée, comme ouvrir la version Web du contenu ou afficher une page promotionnelle pour votre application.
iPadBundleID ID de bundle de l'application iOS à utiliser sur les iPad pour ouvrir le lien. L'application doit être connectée à votre projet depuis la page Présentation de la console Firebase.
minimumAppVersion Le numéro de version de la version minimale de votre application qui peut ouvrir le lien. Cet indicateur est transmis à votre application lorsqu'elle est ouverte, et votre application doit décider quoi en faire.
DynamicLinkNavigationInfoParametersDynamicLinkNavigationInfoParameters
forcedRedirectEnabled S'il est défini sur "1", ignorez la page d'aperçu de l'application lorsque le lien dynamique est ouvert et redirigez plutôt vers l'application ou la boutique. La page d'aperçu de l'application (activée par défaut) peut envoyer de manière plus fiable les utilisateurs vers la destination la plus appropriée lorsqu'ils ouvrent des liens dynamiques dans les applications ; cependant, si vous vous attendez à ce qu'un lien dynamique soit ouvert uniquement dans les applications qui peuvent ouvrir des liens dynamiques de manière fiable sans cette page, vous pouvez le désactiver avec ce paramètre. Ce paramètre affectera le comportement du lien dynamique uniquement sur iOS.
DynamicLinkSocialMetaTagParameters
Titre Titre à utiliser lorsque le lien dynamique est partagé dans une publication sociale.
descriptionTexte Description à utiliser lorsque le lien dynamique est partagé dans une publication sociale.
URL de l'image L'URL d'une image liée à ce lien. L'image doit faire au moins 300 x 200 px et moins de 300 Ko.
DynamicLinkGoogleAnalyticsParameters
la source
moyen
campagne
terme
contenu
Paramètres d'analyse de Google Play. Ces paramètres ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) sont transmis au Play Store et ajoutés à la charge utile du lien.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
jeton d'affiliation
campaignToken
Paramètres d'analyse d'iTunes Connect. Ces paramètres ( pt , at , ct ) sont transmis à l'App Store.

Pour raccourcir un lien dynamique long, transmettez le lien dynamique long à shortenURL(url:options:) avec un objet DynamicLinkComponentsOptions si vous souhaitez générer un lien avec un suffixe court :

Rapide

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objectif c

Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
[FIRDynamicLinkComponents shortenURL:longLinkUrl
                             options:nil
                          completion:^(NSURL * _Nullable shortURL,
                                       NSArray<NSString *> * _Nullable warnings,
                                       NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];

Par défaut, Dynamic Links utilise l'identifiant de groupe de votre application comme schéma d'URL nécessaire pour ouvrir votre application. Nous vous recommandons de conserver cette valeur par défaut pour simplifier votre implémentation.

Cependant, les développeurs qui utilisent déjà un schéma d'URL personnalisé à d'autres fins peuvent également souhaiter utiliser ce même schéma d'URL personnalisé pour leurs liens dynamiques. Si vous êtes dans cette situation, vous pouvez spécifier un schéma d'URL différent pour vos liens dynamiques Firebase en suivant ces étapes :

  1. Lors de la configuration de votre application, assurez-vous de spécifier le schéma d'URL par défaut à utiliser par votre application avant de configurer votre instance partagée FirebaseApp :

    Rapide

    Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication
                       .LaunchOptionsKey: Any]?) -> Bool {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme
      FirebaseApp.configure()
    
      return true
    }
    

    Objectif c

    Remarque : Ce produit Firebase n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou watchOS.
    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME;
      [FIRApp configure];
    
      return YES;
    }
  2. Chaque fois que vous créez un lien dynamique, vous devez spécifier le schéma d'URL personnalisé utilisé par votre application. Vous pouvez le faire via la console Firebase, en définissant le customScheme dans l'API Builder, en spécifiant le paramètre ius dans votre URL ou en envoyant le paramètre iosCustomScheme à l'API REST.

Prochaines étapes

Maintenant que vous avez créé des liens dynamiques, vous devez configurer votre application pour recevoir des liens dynamiques et envoyer les utilisateurs au bon endroit dans votre application après qu'un utilisateur les a ouvertes.

Pour recevoir des liens dynamiques dans votre application, consultez la documentation pour iOS , Android , C++ et Unity .