Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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 les exemples suivants :

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

Conditions préalables

Firebase Dynamic Links nécessite iOS 8 ou une version plus récente. Vous pouvez cibler iOS 7 dans votre application, mais les appels du SDK Firebase Dynamic Links ne fonctionnent que sur les applications exécutant iOS 8 ou une version plus récente.

  1. Ajoutez Firebase à votre projet iOS . Incluez le pod suivant dans votre Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
        
  2. Exécutez pod install et ouvrez le fichier .xcworkspace créé.
  3. Dans la console Firebase, ouvrez la section Liens dynamiques .
  4. 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 disposez déjà d'un préfixe URI de liens dynamiques, notez-le. Vous devez le fournir lorsque vous créez par programme des liens dynamiques.

  5. Recommandé : spécifiez les modèles d'URL autorisés dans vos liens profonds et vos liens de secours. Ce faisant, vous empêchez les 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 .
  6. 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 .well-known répertoire .well-known . Par example:

        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 groupe de votre application. Par example:

    {"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 votre préfixe d'ID d'application peut ne pas être le même que votre ID d'équipe.

Ajouter Firebase à votre application

  1. Importez le module Firebase dans votre UIApplicationDelegate :

    Rapide

    import Firebase

    Objectif c

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

    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 obtenez 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

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

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, DynamicLinkComponents un DynamicLinkComponents 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 example:

Rapide

linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objectif c

[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 devine avec succès un lien court, vous préférerez peut-être générer des suffixes aussi longs que nécessaire pour être uniques, ce que vous pouvez faire en définissant la propriété dynamicLinkComponentsOptions :

Rapide

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

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 l'un 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 ensembles de paramètres communs :

Rapide

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

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 des paramètres de lien dynamique avec les objets et propriétés suivants :

DynamicLinkComponents
relier

Le lien que votre application s'ouvrira. Spécifiez une URL que votre application peut gérer, généralement le contenu ou la charge utile de l'application, qui initie une logique spécifique à l'application (comme 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.

domaineURIPréfixe 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
DynamicLinkAndroidParamètres
URL de secours 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.
Paramètres DynamicLinkIOS
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 secours 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.
CustomScheme 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
iPadFallbackURL Le lien à ouvrir sur les iPad lorsque l'application n'est pas installée. Spécifiez ceci pour faire autre chose que d'installer votre application depuis 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 L'identifiant du bundle de l'application iOS à utiliser sur les iPad pour ouvrir le lien. L'application doit être connectée à votre projet à partir de la page Présentation de la console Firebase.
minimumAppVersion Le numéro de version de la version minimale de votre application pouvant ouvrir le lien. Cet indicateur est transmis à votre application lorsqu'elle est ouverte, et votre application doit décider quoi en faire.
DynamicLinkNavigationInfoParameters
forcéRedirectActivé S'il est défini sur « 1 », ignorez la page d'aperçu de l'application lorsque le lien dynamique est ouvert et redirigez-vous plutôt vers l'application ou le magasin. La page d'aperçu de l'application (activée par défaut) peut envoyer les utilisateurs de manière plus fiable vers la destination la plus appropriée lorsqu'ils ouvrent des liens dynamiques dans les applications ; cependant, si vous prévoyez qu'un lien dynamique sera 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 de Dynamic Link uniquement sur iOS.
DynamicLinkSocialMetaTagParameters
Titre Le titre à utiliser lorsque le lien dynamique est partagé dans une publication sociale.
descriptionTexte La 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 pixels 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
fournisseurJeton
affiliationJeton
jeton de campagne
Paramètres d'analyse 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

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

[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 bundle 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 que votre implémentation reste simple.

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 procédant comme suit :

  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

    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 = self.customURLScheme
      FirebaseApp.configure()
    
      return true
    }

    Objectif c

    - (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 ouvre.

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