Ir a la consola

Crea Dynamic Links en Android

Puedes crear Dynamic Links cortos o largos con la API de Firebase Dynamic Links Builder. Esta API acepta un Dynamic Link largo o un objeto que contenga parámetros de un Dynamic Link, y muestra URL similares a las de estos ejemplos:

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

Configura Firebase y el SDK de Dynamic Links

Para poder crear Dynamic Links en la app para Android, debes incluir el SDK de Firebase. Si tu app está configurada para recibir Dynamic Links, ya completaste estos pasos y puedes omitir esta sección.

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.

    Cuando registres tu app, especifica la clave de firma SHA-1. Si usas vínculos de apps, también debes especificar la clave SHA-256.

  2. En tu archivo build.gradle de nivel de proyecto, asegúrate de incluir el repositorio Maven de Google en las secciones buildscript y allprojects.
  3. Agrega la dependencia de la biblioteca de Android de Firebase Dynamic Links al archivo Gradle (generalmente app/build.gradle) de tu módulo (a nivel de la app):
    implementation 'com.google.firebase:firebase-dynamic-links:19.0.0'
        implementation 'com.google.firebase:firebase-analytics:17.2.0'
  4. En Firebase console, abre la sección Dynamic Links.
  5. Si aún no aceptaste las Condiciones del Servicio ni configuraste un dominio para los Dynamic Links, deberás hacerlo cuando el sistema lo solicite.

    Si ya tienes un dominio de Dynamic Links, anótalo. Deberás proporcionar un dominio para crear Dynamic Links de manera programática.

  6. Recomendado: Especifica los patrones de URL que se permiten en tus vínculos directos y de resguardo. De esa manera, evitas que grupos no autorizados creen Dynamic Links que redireccionen de tu dominio a otros sitios que no puedes controlar. Consulta Cómo incluir patrones de URL en la lista blanca.

Usa Firebase console

Visita Firebase console y sigue los pasos que se indican en el formulario para generar Dynamic Links de forma manual. Esta es la forma más sencilla de producirlos, ya sea para hacer pruebas o para que tu equipo de marketing cree fácilmente un vínculo que pueda usarse, por ejemplo, en publicaciones de redes sociales.

Crea un Dynamic Link a partir de parámetros

Para crear un Dynamic Link, crea un objeto DynamicLink nuevo con su compilador y especifica los parámetros del Dynamic Link con los métodos del compilador. Luego, llama a buildDynamicLink o buildShortDynamicLink.

El siguiente ejemplo simple crea un Dynamic Link largo a https://www.example.com/ que se abre con tu app para Android y la app com.example.ios en 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

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

val dynamicLinkUri = dynamicLink.uri

Para crear un Dynamic Link corto, compila un DynamicLink de la misma manera y, a continuación, llama a buildShortDynamicLink. La compilación de un vínculo corto requiere una llamada de red, de manera que, en lugar de mostrar directamente el vínculo, buildShortDynamicLink muestra un Task, que habilita el vínculo corto cuando se completa la solicitud. Por ejemplo:

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

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }.addOnFailureListener {
            // Error
            // ...
        }

Según la configuración predeterminada, se generan los Dynamic Links cortos con sufijos de vínculos de 17 caracteres. Esto hace que sea muy improbable que una persona adivine un Dynamic Link válido. Si en tu caso práctico no es perjudicial que una persona adivine correctamente los vínculos cortos, puedes generar sufijos que solo tengan el largo suficiente a fin de que sean únicos. Para ello, pasa ShortDynamicLink.Suffix.SHORT al método buildShortDynamicLinkde esta manera:

Java

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

Kotlin

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT)
        // ...

Parámetros del Dynamic Link

Puedes usar la API de Dynamic Link Builder para crear Dynamic Links con cualquiera de los parámetros admitidos. Consulta la referencia de la API para obtener más detalles.

El siguiente ejemplo crea un Dynamic Link con varios parámetros comunes configurados:

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

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

Puedes configurar los parámetros del Dynamic Link con los siguientes métodos:

Parámetros del Dynamic Link
setLink

El vínculo que abrirá tu app. Especifica una URL que tu app pueda manejar, como el contenido o la carga útil, que inicia una lógica específica de la app (como darle créditos al usuario con un cupón o mostrar una pantalla de bienvenida). Este vínculo debe ser una URL con un formato correcto y la codificación URL adecuada, debe usar HTTP o HTTPS y no puede ser otro Dynamic Link.

setDomainUriPrefix El prefijo de URI del Dynamic Link, que puedes encontrar en Firebase console. Un dominio de Dynamic Link debería tener un formato similar a los siguientes ejemplos:

https://example.com/link
https://example.page.link
Parámetros de Android
setFallbackUrl El vínculo que se debe abrir cuando la app no está instalada. Especifica el parámetro para hacer otra acción que no sea instalar tu app desde Play Store cuando no esté instalada, como abrir la versión web móvil del contenido o mostrar una página promocional de tu app.
setMinimumVersion El versionCode de la versión mínima de tu app que puede abrir el vínculo. Si la app instalada es una versión anterior, se dirige al usuario a Play Store para que la actualice.
Parámetros de iOS
setAppStoreId El ID de la app en App Store, que se usa para enviar usuarios a App Store cuando la app no está instalada.
setFallbackUrl El vínculo que se debe abrir cuando la app no está instalada. Especifica este parámetro para hacer otra acción que no sea instalar la app desde App Store cuando no esté instalada, como abrir la versión web móvil del contenido o mostrar una página promocional de la app.
setCustomScheme El esquema de URL personalizada de la app, si se define con un valor diferente del ID de paquete.
setIpadFallbackUrl El vínculo que se debe abrir en iPads cuando la app no está instalada. Especifica esto para que haga algo diferente de instalar tu app desde App Store cuando la app no esté instalada, como abrir la versión web del contenido o mostrar una página promocional de tu app.
setIpadBundleId El ID de paquete de la app para iOS que se usa en iPads a fin de abrir el vínculo. La app debe estar conectada a tu proyecto desde la página Descripción general de Firebase console.
setMinimumVersion El número de la versión mínima de la app que puede abrir el vínculo. Este indicador se pasa a tu app cuando se abre y la app debe decidir qué hacer con él.
Parámetros de Navigation Info
setForcedRedirectEnabled Si se configura en “1”, omite la página de vista previa de la app cuando se abre el Dynamic Link y, en su lugar, redirecciona a la app o la tienda. La página de vista previa de la app (habilitada en la configuración predeterminada) puede enviar a los usuarios de manera más confiable al destino más apropiado cuando abren Dynamic Links en apps. Sin embargo, si esperas que se abra solo un Dynamic Link en apps que pueden abrir Dynamic Links de manera confiable sin esta página, puedes inhabilitarla con este parámetro. Nota: Actualmente, solo se muestra la página de vista previa de la app en iOS, pero podría mostrarse en Android en algún momento. Este parámetro afectará el comportamiento del Dynamic Link en ambas plataformas.
Parámetros de Social Meta Tag
setTitle El título que se usará cuando se comparta el Dynamic Link en una publicación de redes sociales.
setDescription La descripción que se usará cuando se comparta el Dynamic Link en una publicación de redes sociales.
setImageUrl La URL a una imagen relacionada con este vínculo. La imagen debe tener al menos 300x200 px y pesar menos de 300 KB.
Parámetros de Google Analytics
setSource
setMediumsetCampaignsetTermsetContent
Parámetros de análisis de Google Play. Se pasan estos parámetros (utm_source, utm_medium, utm_campaign, utm_term, utm_content) a Play Store y se agregan a la carga útil del vínculo.
Parámetros de iTunes Connect Analytics
setProviderToken
setAffiliateTokensetCampaignToken
Parámetros de análisis de iTunes Connect. Estos parámetros (pt, at y ct) se pasan a la App Store.

Cómo acortar un Dynamic Link largo

Para acortar un vínculo dinámico largo, especifica su URL mediante setLongLink en lugar de configurar parámetros con los otros métodos de compilación:

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

val 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()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }
        .addOnFailureListener {
            // Error
            // ...
        }