Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

  1. Ajouter Firebase à votre projet iOS .
  2. Inclure la nacelle suivante dans votre Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
        
  3. Exécuter pod install et ouvrir le créé .xcworkspace fichier.
  4. Dans la console Firebase, ouvrez la section des liens dynamiques.
  5. 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 d'URI de liens dynamiques, notez-le. Vous devez le fournir lorsque vous créez par programme des liens dynamiques.

  6. Recommandé: Spécifiez les modèles d'URL autorisés dans vos liens profonds et des 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 les patterns d'URL spécifique .
  7. 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 à votre projet de Firebase la page Paramètres et sélectionnez votre application iOS.

    Assurez -vous que votre projet Firebase est correctement configuré pour utiliser des liens dynamiques dans votre application iOS en ouvrant le apple-app-site-association fichier qui est hébergé sur votre domaine des liens dynamiques. Firebase servirons l' apple-app-site-association fichier à partir de la racine du domaine, ainsi que le .well-known sous - répertoire. Par exemple:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/apple-app-site-association
        

    Si votre application est connecté, l' apple-app-site-association fichier contient une référence au préfixe App ID et l' ID bundle de votre application. Par exemple:

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

    Si les details propriété est vide, vérifiez que vous avez spécifié préfixe App ID. 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. Importer le module Firebase dans votre UIApplicationDelegate :

    Rapide

    import Firebase

    Objectif c

    @import Firebase;
  2. Configurer une FirebaseApp instance partagée, généralement dans votre application 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 voulez générer un seul Dynamic Link, que ce soit à des fins de test, ou pour votre équipe de marketing pour créer facilement un lien qui peut être utilisé dans quelque chose comme un poste de médias sociaux, la façon la plus simple serait de visiter la console Firebase et de 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 nouveau DynamicLinkComponents objet et spécifier les paramètres Dynamic Link en définissant les propriétés de l'objet correspondant. Ensuite, obtenir le lien à long de l'objet url propriété ou obtenir le lien court en appelant shorten() .

L'exemple suivant crée un minimum un long Dynamic Link à https://www.example.com/my-page qui 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 court Dynamic Link, construire un DynamicLinkComponents de la même façon, puis appelez shorten() .

Construire un lien court nécessite un appel réseau, donc au lieu de retourner directement le lien, shorten() accepte un gestionnaire d'achèvement, qui est appelée lorsque la demande finalise. 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 pas de mal à quelqu'un deviner avec succès un lien court, vous préférerez peut - être générer des suffixes qui sont aussi longtemps que nécessaire pour être unique, que vous pouvez faire en définissant la dynamicLinkComponentsOptions propriété:

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 aspect de domaine dynamique Lien comme les 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 La 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 à 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'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 qui peut 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
teneur
Paramètres d'analyse de Google Play. Ces paramètres ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) sont répercutées sur le Play Store, ainsi que ajoutée à la charge utile de lien.
DynamicLinkItunesConnectAnalyticsParameters
fournisseurJeton
affiliationJeton
jeton de campagne
Paramètres d'analyse iTunes Connect. Ces paramètres ( pt , at , ct ) sont passés à l'App Store.

Pour raccourcir une longue Dynamic Link, passer le temps Dynamic Link à shortenURL(url:options:) avec un DynamicLinkComponentsOptions objet si vous voulez générer un lien avec un court suffixe:

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 système d'URL par défaut à utiliser par votre application avant de configurer votre FirebaseApp instance partagée:

    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 = 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, le réglage de la customScheme dans l'API Builder, en spécifiant le ius paramètre dans votre URL, ou envoyer le iosCustomScheme paramètre à 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 l' unité .