Puedes crear Dynamic Links cortos o largos con la API de Builder de Firebase Dynamic Links. Esta API acepta un Dynamic Link largo o un objeto que contenga parámetros de Dynamic Link parámetros y muestra URLs como los siguientes ejemplos:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Requisitos previos
Antes de comenzar, asegúrate de agregar Firebase a tu proyecto de iOS.
Configura Firebase y el SDK de Dynamic Links
Usa Swift Package Manager para instalar y administrar las dependencias de Firebase.
- En Xcode, con tu proyecto de app abierto, navega a File > Add Packages.
- Cuando se te solicite, agrega el repositorio del SDK de Firebase para plataformas de Apple:
- Elige la biblioteca de Dynamic Links.
- Agrega la marca
-ObjC
a la sección Other Linker Flags de la configuración de compilación de tu destino. - Para obtener una experiencia óptima con Dynamic Links, te recomendamos habilitar Google Analytics en tu proyecto de Firebase y agregar el SDK de Firebase para Google Analytics a la app. Puedes seleccionar la biblioteca sin la colección de IDFA o con la colección de IDFA.
- Cuando termines, Xcode comenzará a resolver y descargar automáticamente tus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Ahora, debes realizar los siguientes pasos de configuración:
- En Firebase console, abre la sección Dynamic Links.
-
Si aún no has aceptado las Condiciones del Servicio ni configurado un prefijo de URI para tus Dynamic Links, deberás hacerlo cuando el sistema lo solicite.
Si ya tienes un prefijo de URI de Dynamic Links, anótalo. Debes proporcionarla cuando crees Dynamic Links de manera programática.
- 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 permitir patrones de URL específicos.
-
Asegúrate de que el ID de App Store y el prefijo de ID de la app estén especificados en la configuración de la app. Para ver y editar la configuración de tu app, ve a la página de configuración del proyecto de Firebase y selecciona tu app para iOS.
Confirma que tu proyecto de Firebase esté configurado correctamente para usar Dynamic Links en tu app para iOS abriendo el archivo
apple-app-site-association
alojado en tu Dynamic Links. Firebase entregará el archivoapple-app-site-association
desde la raíz del dominio, así como el subdirectorio.well-known
. Por ejemplo:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
Si tu app está conectada, el archivo
apple-app-site-association
contiene una referencia al ID del paquete y al prefijo de ID de la app. Por ejemplo:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
Si la propiedad
details
está vacía, vuelve a verificar que hayas especificado el prefijo del ID de la app. Ten en cuenta que el prefijo del ID de la app puede no coincidir con el ID del equipo.
Agrega Firebase a tu app
- Importa el módulo
FirebaseCore
en tuUIApplicationDelegate
, así como cualquier otro módulo de Firebase que use el delegado de la app. Por ejemplo, para usar Cloud Firestore y Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configura una instancia compartida de
FirebaseApp
en el métodoapplication(_:didFinishLaunchingWithOptions:)
del delegado de la app:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Si usas SwiftUI, debes crear un delegado de la aplicación y adjuntarlo
al struct de tu
App
a través deUIApplicationDelegateAdaptor
oNSApplicationDelegateAdaptor
. También debes inhabilitar el swizzling del delegado de la app. Para obtener más información, consulta las instrucciones de SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Usa la consola de Firebase
Si quieres generar un único Dynamic Link, ya sea para fines de pruebas o para que tu equipo de marketing cree fácilmente un vínculo que pueda usarse en algo como una publicación de redes sociales, la forma más sencilla sería visitar la consola de Firebase o crear uno manualmente siguiendo el formulario paso a paso.
Usa la API de iOS Builder
Puedes usar la API de iOS Builder para crear Dynamic Links a partir de parámetros o para acortar un Dynamic Link largo.
Crea un Dynamic Link a partir de parámetros
Para crear un Dynamic Link, crea un nuevo objeto DynamicLinkComponents
y especifica los parámetros de Dynamic Link estableciendo las propiedades correspondientes del objeto. A continuación, obtén el vínculo largo mediante la propiedad url
del objeto. También puedes llamar a shorten()
para obtener el vínculo corto.
En el siguiente ejemplo, se crea un Dynamic Link largo a https://www.example.com/my-page
que se abre con tu app para iOS en iOS y con la app com.example.android
en Android:
Swift
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)")
Objective-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);
Para crear un Dynamic Link corto, compila un DynamicLinkComponents
de la misma manera y, a continuación, llama a shorten()
.
La compilación de un vínculo corto requiere una llamada de red, de modo que en lugar de mostrar directamente el vínculo, shorten()
acepta el controlador de finalización, al cual se llama cuando se completa la solicitud. Por ejemplo:
Swift
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
De forma predeterminada, se generan 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 de uso no es perjudicial que alguien adivine correctamente los vínculos cortos, puedes generar sufijos que solo tengan el largo suficiente para que sean únicos. Para ello, configura la propiedad dynamicLinkComponentsOptions
de esta manera:
Swift
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)") }
Objective-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); }];
Parámetros 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.
En el siguiente ejemplo, se crea un Dynamic Link con varios parámetros conjuntos de ejemplos comunes:
Swift
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)")
Objective-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);
Puedes configurar parámetros de Dynamic Link con los siguientes objetos y propiedades:
DynamicLinkComponents | |
---|---|
link |
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. |
domainURIPrefix | El prefijo de URL de Dynamic Link, que puedes encontrar en la consola de Firebase. Un
dominio Dynamic Link se parece a los siguientes ejemplos:
https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
fallbackURL | El vínculo que se debe abrir cuando la app no esté instalada. Especifica el parámetro para hacer otra acción distinta de 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. |
minimumVersion | 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. |
DynamicLinkIOSParameters | |
---|---|
appStoreID | El ID de la app en App Store, que se usa para enviar usuarios a App Store cuando la app no está instalada. |
fallbackURL | 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 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. |
customScheme | El esquema de URL personalizada de la app, si se define con un valor diferente del ID de paquete. |
iPadFallbackURL | 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. |
iPadBundleID | 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 de descripción general de la consola de Firebase. |
minimumAppVersion | 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. |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | 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 se abra un Dynamic Link solo en apps que pueden abrir Dynamic Links de manera confiable sin esta página, puedes inhabilitarlo con este parámetro. Este parámetro afectará el comportamiento de Dynamic Link solo en iOS. |
DynamicLinkSocialMetaTagParameters | |
---|---|
title | El título que se usará cuando se comparta el Dynamic Link en una publicación de redes sociales. |
descriptionText | La descripción que se usará cuando se comparta el Dynamic Link en una publicación de redes sociales. |
imageURL | La URL a una imagen relacionada con este vínculo. La imagen debe tener al menos 300x200 px y pesar menos de 300 KB. |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
fuente medio campaña término contenido |
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.
|
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
providerToken affiliateToken campaignToken |
Parámetros de análisis de iTunes Connect. Estos parámetros (pt ,
at y ct ) se pasan a la App Store. |
Acorta un Dynamic Link largo
Para acortar un Dynamic Link largo, pasa el Dynamic Link largo a shortenURL(url:options:)
junto con un objeto DynamicLinkComponentsOptions
en caso de que quieras generar un vínculo con un sufijo corto:
Swift
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-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); }];
Especifica un esquema de URL personalizada para Dynamic Links
En la configuración predeterminada, Dynamic Links usa el identificador de paquete de tu aplicación como el esquema de URL necesario para abrirla. Te recomendamos mantener ese valor predeterminado a fin de evitar complicaciones en tu implementación.
Sin embargo, es posible que los desarrolladores que ya usen un esquema de URL personalizada por otros motivos quieran usar ese mismo esquema en sus Dynamic Links. Si este es tu caso, puedes especificar un esquema de URL diferente para tu Firebase Dynamic Links de la siguiente manera:
- Cuando configures la app, asegúrate de especificar el esquema de URL personalizada que usará antes de configurar la instancia compartida de
FirebaseApp
:Swift
Nota: Este producto de Firebase no se encuentra disponible en objetivos de macOS, Mac Catalyst, tvOS ni watchOS.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 }
Objective-C
Nota: Este producto de Firebase no se encuentra disponible en objetivos de macOS, Mac Catalyst, tvOS ni watchOS.- (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; }
- Cuando crees un Dynamic Link, deberás especificar el esquema de URL personalizada que usa la app. Puedes hacerlo a través de la consola Firebase, si configuras
customScheme
en la API de Builder y especificas el parámetroius
en tu URL. También puedes enviar el parámetroiosCustomScheme
a la API de REST
Próximos pasos
Ahora que creaste Dynamic Links, debes configurar tu app para recibir Dynamic Links y enviar a los usuarios al lugar correcto de tu app después de que los abra.
Para recibir Dynamic Links en tu app, consulta la documentación de iOS, Android, C++ y Unity.