Puedes crear Dynamic Links cortos o largos con la API de Firebase Dynamic Links Builder, que acepta un Dynamic Link largo o un objeto que contenga parámetros de Dynamic Links y muestra URLs 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.
Instala e inicializa los SDK de Firebase para Flutter si aún no lo has hecho.
Desde el directorio raíz de tu proyecto de Flutter, ejecuta el siguiente comando para instalar el complemento de Dynamic Links:
flutter pub add firebase_dynamic_links
Si estás creando una app para Android, abre la página Configuración del proyecto de Firebase console y asegúrate de haber especificado tu clave de firma SHA-1. Si usas vínculos de apps, también debes especificar la clave SHA-256.
En Firebase console, abre la sección Dynamic Links.
Si aún no has configurado un dominio para tus Dynamic Links, haz clic en el botón Comenzar y sigue las instrucciones.
Si ya tienes un dominio de Dynamic Links, anótalo. Deberás proporcionar un dominio para crear Dynamic Links de manera programática.
Recomendación: En el menú “Más” (⋮), especifica los patrones de URL permitidos en tus vínculos directos y de resguardo. De esa manera, evitas que personas no autorizadas creen Dynamic Links que se redireccionen desde tu dominio a otros sitios que no puedes controlar. Consulta Cómo permitir patrones de URL específicos.
Crea un Dynamic Link a partir de parámetros
Para crear un Dynamic Link, crea un nuevo objeto DynamicLinkParameters
y pásalo a buildLink()
o buildShortLink()
.
El siguiente ejemplo simple crea un Dynamic Link largo a https://www.example.com/
que se abre con com.example.app.android
en Android y con la app com.example.app.ios
en iOS:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);
Para crear un Dynamic Link corto, pasa el objeto DynamicLinkParameters
a buildShortLink()
. Se necesita una llamada de red para crear el vínculo corto.
Por ejemplo:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
Según la configuración predeterminada, los Dynamic Links cortos se generan con sufijos de unos pocos caracteres. Si bien esto hace que los vínculos sean más compactos, también introduce la posibilidad de que alguien pueda adivinar un vínculo corto válido. A menudo, no hay daño si alguien logra hacer eso, ya que el vínculo dirige a información pública.
Sin embargo, en el caso de los vínculos cortos que dirigen a información específica para un usuario, debes
crear vínculos más largos con sufijos de 17 caracteres, de modo que sea muy poco probable que
alguien adivine un Dynamic Link válido. Para hacerlo, pasa ShortDynamicLinkType.unguessable
al método buildShortLink()
:
final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
dynamicLinkParams,
shortLinkType: ShortDynamicLinkType.unguessable,
);
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.
El siguiente ejemplo crea un Dynamic Link con varios parámetros comunes configurados:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(
packageName: "com.example.app.android",
minimumVersion: 30,
),
iosParameters: const IOSParameters(
bundleId: "com.example.app.ios",
appStoreId: "123456789",
minimumVersion: "1.0.1",
),
googleAnalyticsParameters: const GoogleAnalyticsParameters(
source: "twitter",
medium: "social",
campaign: "example-promo",
),
socialMetaTagParameters: SocialMetaTagParameters(
title: "Example of a Dynamic Link",
imageUrl: Uri.parse("https://example.com/image.png"),
),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
Puedes configurar los parámetros del Dynamic Link con los siguientes métodos:
Parámetros de Dynamic Link | |
---|---|
setLink | El vínculo que tu app abrirá. Especifica una URL que tu app pueda controlar, 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 URL del Dynamic Link, que puedes encontrar en Firebase console. Un
dominio de Dynamic Link tiene un formato similar a los siguientes ejemplos:
https://example.com/link https://example.page.link |
AndroidParameters | |
---|---|
setFallbackUrl | El vínculo que se debe abrir cuando la app no esté instalada. Especifica este parámetro para hacer otra acción distinta de instalar la 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 la 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. |
IosParameters | |
---|---|
setAppStoreId | El ID de la app en App Store, que se usa para enviar usuarios a la App Store cuando la app no está instalada. |
setFallbackUrl | El vínculo que se debe abrir cuando la app no esté instalada. Especifica esto para que realice una acción que no sea instalar tu app desde App Store cuando la app no esté instalada, como abrir la versión web móvil del contenido o mostrar una página promocional de tu 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 para abrir el vínculo. La app debe estar conectada a tu proyecto desde la página Informació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. |
NavigationInfoParameters | |
---|---|
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 de forma 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 un Dynamic Link se abra solamente en apps que pueden abrir Dynamic Links de manera confiable sin esta página, puedes inhabilitarla con este parámetro. Este parámetro afectará el comportamiento del Dynamic Link solo en iOS |
SocialMetaTagParameters | |
---|---|
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. |
GoogleAnalyticsParameters | |
---|---|
setSource setMedium setCampaign setTerm setContent |
Parámetros de estadísticas 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. |
ItunesConnectAnalyticsParameters | |
---|---|
setProviderToken setAffiliateToken setCampaignToken |
Parámetros de estadísticas de iTunes Connect. Se pasan estos parámetros (`pt`, `at`, `ct`) a App Store. |