Cette page a été traduite par l'API Cloud Translation.
Switch to English

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 un lien dynamique long ou 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 plus récent. 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 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 .
  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 avez déjà un préfixe URI Dynamic Links, notez-le. Vous devez le fournir lorsque vous créez des liens dynamiques par programme.

  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 des parties non autorisées de créer des liens dynamiques qui redirigent de votre domaine vers des sites que vous ne contrôlez pas. Voir Modèles d'URL de liste blanche .
  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 les liens dynamiques 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 du .well-known 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 à l'ID App Store et à l'ID du 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.

Ajoutez 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: method:

    Rapide

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

    Objectif c

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

Utilisez 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. en suivant manuellement le formulaire étape par étape.

Utilisez 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 de lien dynamique en définissant les propriétés correspondantes de l'objet. Ensuite, récupérez le lien long 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() .

Construire 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

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.dynamicLinkComponentsOptions = DynamicLinkComponentsOptions()
linkBuilder.dynamicLinkComponentsOptions.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. Consultez la référence API pour plus de détails.

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

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 les paramètres Dynamic Link avec les objets et propriétés suivants:

DynamicLinkComponents
lien

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 lance une logique spécifique à l'application (comme attribuer un coupon à l'utilisateur ou afficher un écran de bienvenue). Ce lien doit être une URL correctement formatée, être correctement encodé en URL, utiliser HTTP ou HTTPS et ne peut pas être un autre lien dynamique.

domaineURIPrefix Votre préfixe d'URL de lien dynamique, 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
fallbackURL Le lien à ouvrir lorsque l'application n'est pas installée. Spécifiez cette option 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.
minimumVersion 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.
DynamicLinkIOSParamètres
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
fallbackURL Le lien à ouvrir lorsque l'application n'est pas installée. Spécifiez cette option 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 étant autre 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 cela 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 L'ID du 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 lors de son ouverture, et votre application doit décider quoi en faire.
DynamicLinkNavigationInfoParameters
forcéRedirectEnabled 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 la boutique. 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 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. Remarque: la page d'aperçu de l'application n'est actuellement affichée que sur iOS, mais peut éventuellement être affichée sur Android. Ce paramètre affectera le comportement du lien dynamique sur les deux plates-formes.
DynamicLinkSocialMetaTagParameters
Titre Le 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 mesurer au moins 300 x 200 px et moins de 300 Ko.
DynamicLinkGoogleAnalyticsParameters
la source
moyen
campagne
terme
contenu
Paramètres d'analyse Google Play. Ces paramètres ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) sont transmis au Play Store ainsi que ajoutés à la charge utile du lien.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
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, passez 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 du 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 .