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 Android

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

Avant de pouvoir créer des liens dynamiques dans votre application Android, vous devez inclure le SDK Firebase. Si votre application est configurée pour recevoir des liens dynamiques, vous avez déjà effectué ces étapes et vous pouvez ignorer cette section.

  1. Si vous avez pas déjà, ajoutez Firebase à votre projet Android .

    Lorsque vous enregistrez votre application, spécifiez votre clé de signature SHA-1. Si vous utilisez App Links, spécifiez également votre clé SHA-256.

  2. Utilisation de la Firebase Android BoM , déclarer la dépendance de la bibliothèque Android Liens dynamique dans votre module (app-niveau) de fichier Gradle (généralement app/build.gradle ).

    Pour une expérience optimale avec des liens dynamiques, nous vous recommandons de permettre à Google Analytics dans votre projet Firebase et en ajoutant le SDK Firebase Google Analytics à votre application.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    En utilisant le Firebase Android BoM , votre application utilise toujours des versions compatibles des bibliothèques Firebase Android.

    (Alternative) déclarer des dépendances de bibliothèque firebase sans utiliser la nomenclature

    Si vous choisissez de ne pas utiliser la nomenclature de Firebase, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.

    Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons fortement d' utiliser la BoM pour gérer les versions bibliothèque, ce qui garantit que toutes les versions sont compatibles.

    dependencies {
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:20.1.1'
        implementation 'com.google.firebase:firebase-analytics:19.0.2'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    En utilisant le Firebase Android BoM , votre application utilise toujours des versions compatibles des bibliothèques Firebase Android.

    (Alternative) déclarer des dépendances de bibliothèque firebase sans utiliser la nomenclature

    Si vous choisissez de ne pas utiliser la nomenclature de Firebase, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.

    Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons fortement d' utiliser la BoM pour gérer les versions bibliothèque, ce qui garantit que toutes les versions sont compatibles.

    dependencies {
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx:20.1.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.2'
    }
    
  3. Dans la console Firebase, ouvrez la section des liens dynamiques.
  4. Si vous n'avez pas encore accepté les conditions d'utilisation et défini un domaine pour vos liens dynamiques, faites-le lorsque vous y êtes invité.

    Si vous avez déjà un domaine Dynamic Links, prenez-en note. Vous devez fournir un domaine de liens dynamiques lorsque vous créez des liens dynamiques par programmation.

  5. 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 .

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.

Pour créer un lien dynamique, créez un nouveau DynamicLink objet avec son constructeur, en spécifiant les paramètres du Dynamic Link avec les méthodes Builder. Ensuite, appelez buildDynamicLink ou buildShortDynamicLink .

L'exemple suivant crée un minimum un long Dynamic Link à https://www.example.com/ qui ouvre avec votre application Android sur Android et les applications com.example.ios sur iOS:

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Pour créer un court Dynamic Link, construire un DynamicLink de la même manière, puis appelez buildShortDynamicLink . Construire un lien court nécessite un appel réseau, donc au lieu de retourner directement le lien, buildShortDynamicLink renvoie une Task , ce qui rend le lien court disponible lorsque le finalise demande. Par exemple:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

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 passant ShortDynamicLink.Suffix.SHORT à la buildShortDynamicLink méthode :

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

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 :

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Vous pouvez définir les paramètres Dynamic Link avec les méthodes suivantes :

Paramètres DynamicLink
setLink

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.

setDomainUriPrefix 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
AndroidParamètres
setFallbackUrl 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.
setMinimumVersion 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.
IosParamètres
setAppStoreId L'identifiant App Store de votre application, utilisé pour envoyer les utilisateurs vers l'App Store lorsque l'application n'est pas installée
setFallbackUrl 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.
setCustomScheme 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
setIpadFallbackUrl 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.
setIpadBundleId 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.
setVersionminimum 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.
NavigationInfoParamètres
setForcedRedirectEnabled 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.
SocialMetaTagParameters
setTitre Le titre à utiliser lorsque le lien dynamique est partagé dans une publication sociale.
setDescription La description à utiliser lorsque le lien dynamique est partagé dans une publication sociale.
setUrlImage L'URL d'une image liée à ce lien. L'image doit faire au moins 300 x 200 pixels et moins de 300 Ko.
Paramètres GoogleAnalytics
setSource
setMedium
setCampaign
setTerm
setContent
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.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Paramètres d'analyse iTunes Connect. Ces paramètres ( pt , at , ct ) sont passés à l'App Store.

Pour raccourcir une longue Dynamic Link, spécifiez l'URL du Dynamic Link à l' aide setLongLink au lieu de définir les paramètres avec les autres méthodes de constructeur:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse("https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios")
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}