Puede crear Dynamic Links cortos o largos con la API de Firebase Dynamic Links Builder. Esta API acepta un enlace dinámico largo o un objeto que contiene parámetros de enlace dinámico y devuelve URL como los siguientes ejemplos:
https://example.com/link/WXYZ https://example.page.link/WXYZ
requisitos previos
Antes de comenzar, asegúrese de agregar Firebase a su proyecto de iOS .
Configurar Firebase y el SDK de Dynamic Links
Use Swift Package Manager para instalar y administrar las dependencias de Firebase.
- En Xcode, con su proyecto de aplicación abierto, vaya a Archivo > Agregar paquetes .
- Cuando se le solicite, agregue el repositorio del SDK de las plataformas Apple de Firebase:
- Elija la biblioteca de Dynamic Links.
- Para una experiencia óptima con Dynamic Links, recomendamos habilitar Google Analytics en su proyecto de Firebase y agregar el SDK de Firebase para Google Analytics a su aplicación. Puede seleccionar la biblioteca sin colección IDFA o con colección IDFA.
- Cuando termine, Xcode comenzará a resolver y descargar automáticamente sus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk
Ahora, realice algunos pasos de configuración:
- En Firebase console, abra la sección Dynamic Links .
Si aún no ha aceptado los términos de servicio y no ha establecido un prefijo de URI para sus Dynamic Links, hágalo cuando se le solicite.
Si ya tiene un prefijo URI de Dynamic Links, anótelo. Debe proporcionarlo cuando cree Dynamic Links mediante programación.
- Recomendado : especifique los patrones de URL permitidos en sus enlaces profundos y enlaces alternativos. Al hacerlo, evita que terceros no autorizados creen vínculos dinámicos que redirigen desde su dominio a sitios que no controla. Consulte Permitir patrones de URL específicos .
Asegúrese de que la ID de la tienda de aplicaciones de su aplicación y el prefijo de su ID de aplicación estén especificados en la configuración de su aplicación. Para ver y editar la configuración de su aplicación, vaya a la página Configuración de su proyecto de Firebase y seleccione su aplicación para iOS.
Confirme que su proyecto de Firebase está configurado correctamente para usar Dynamic Links en su aplicación de iOS abriendo el archivo
apple-app-site-association
que está alojado en su dominio de Dynamic Links. Firebase servirá el archivo deapple-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 su aplicación está conectada, el archivo
apple-app-site-association
la aplicación de Apple contiene una referencia al prefijo de ID de la aplicación y al ID del paquete de su aplicación. Por ejemplo:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
Si la propiedad de
details
está vacía, vuelva a verificar que especificó el prefijo de ID de la aplicación. Tenga en cuenta que su prefijo de ID de aplicación puede no ser el mismo que su ID de equipo.
Agregue Firebase a su aplicación
- Importe el módulo
FirebaseCore
en suUIApplicationDelegate
, así como cualquier otro módulo de Firebase que use el delegado de su aplicación. Por ejemplo, para usar Cloud Firestore y autenticación:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Rápido
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
C objetivo
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure una instancia compartida de
FirebaseApp
en el métodoapplication(_:didFinishLaunchingWithOptions:)
del delegado de su aplicación:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Rápido
// Use Firebase library to configure APIs FirebaseApp.configure()
C objetivo
// Use Firebase library to configure APIs [FIRApp configure];
- Si usa SwiftUI, debe crear un delegado de aplicación y adjuntarlo a su estructura de
App
a travésUIApplicationDelegateAdaptor
oNSApplicationDelegateAdaptor
. También debe deshabilitar el intercambio de delegados de aplicaciones. Para obtener más información, consulte 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() } } } }
Usar la consola de Firebase
Si desea generar un solo enlace dinámico, ya sea con fines de prueba o para que su equipo de marketing cree fácilmente un enlace que se pueda usar en algo como una publicación en las redes sociales, la forma más sencilla sería visitar la consola de Firebase y crear uno. manualmente siguiendo el paso a paso del formulario.
Utilice la API del desarrollador de iOS
Puede usar la API de iOS Builder para crear vínculos dinámicos a partir de parámetros o para acortar un vínculo dinámico largo.
Crear un vínculo dinámico a partir de parámetros
Para crear un Dynamic Link, cree un nuevo objeto DynamicLinkComponents
y especifique los parámetros de Dynamic Link configurando las propiedades correspondientes del objeto. Luego, obtenga el enlace largo de la propiedad url
del objeto u obtenga el enlace corto llamando a shorten()
.
El siguiente ejemplo mínimo crea un enlace dinámico largo a https://www.example.com/my-page
que se abre con su aplicación iOS en iOS y la aplicación com.example.android
en Android:
Rápido
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)")
C objetivo
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 enlace dinámico corto, cree un DynamicLinkComponents
de la misma manera y luego llame a shorten()
.
La creación de un enlace corto requiere una llamada de red, por lo que en lugar de devolver directamente el enlace, shorten()
acepta un controlador de finalización, que se llama cuando se completa la solicitud. Por ejemplo:
Rápido
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
C objetivo
[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, los enlaces dinámicos cortos se generan con sufijos de enlace de 17 caracteres que hacen que sea muy poco probable que alguien pueda adivinar un enlace dinámico válido. Si, para su caso de uso, no hay ningún problema en que alguien adivine con éxito un enlace corto, es posible que prefiera generar sufijos que sean solo lo necesarios para que sean únicos, lo que puede hacer configurando la propiedad dynamicLinkComponentsOptions
:
Rápido
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)") }
C objetivo
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 de enlace dinámico
Puede usar la API Dynamic Link Builder para crear Dynamic Links con cualquiera de los parámetros admitidos. Consulte la referencia de la API para obtener más detalles.
El siguiente ejemplo crea un vínculo dinámico con varios parámetros comunes establecidos:
Rápido
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)")
C objetivo
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);
Puede establecer parámetros de Dynamic Link con los siguientes objetos y propiedades:
Componentes de enlace dinámico | |
---|---|
Enlace | El enlace que abrirá su aplicación. Especifique una URL que su aplicación pueda manejar, normalmente el contenido de la aplicación o la carga útil, que inicia la lógica específica de la aplicación (como acreditar al usuario con un cupón o mostrar una pantalla de bienvenida). Este vínculo debe ser una URL bien formateada, estar correctamente codificado como URL, usar HTTP o HTTPS y no puede ser otro vínculo dinámico. |
dominioURIPrefijo | Su prefijo de URL de enlace dinámico, que puede encontrar en la consola de Firebase. Un dominio de Dynamic Link se parece a los siguientes ejemplos: https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
URL alternativa | El enlace para abrir cuando la aplicación no está instalada. Especifique esto para hacer algo más que instalar su aplicación desde Play Store cuando la aplicación no está instalada, como abrir la versión web móvil del contenido o mostrar una página promocional para su aplicación. |
versión mínima | El versionCode de versión de la versión mínima de su aplicación que puede abrir el enlace. Si la aplicación instalada es una versión anterior, se lleva al usuario a Play Store para actualizar la aplicación. |
Parámetros DynamicLinkIOS | |
---|---|
AppStoreID | El ID de la tienda de aplicaciones de su aplicación, que se usa para enviar a los usuarios a la tienda de aplicaciones cuando la aplicación no está instalada |
URL alternativa | El enlace para abrir cuando la aplicación no está instalada. Especifique esto para hacer algo más que instalar su aplicación desde App Store cuando la aplicación no está instalada, como abrir la versión web móvil del contenido o mostrar una página promocional para su aplicación. |
esquema personalizado | El esquema de URL personalizado de su aplicación, si se define como algo diferente al ID del paquete de su aplicación |
iPadFallbackURL | El enlace para abrir en iPads cuando la aplicación no está instalada. Especifique esto para hacer algo más que instalar su aplicación desde App Store cuando la aplicación no está instalada, como abrir la versión web del contenido o mostrar una página promocional para su aplicación. |
iPadBundleID | El ID del paquete de la aplicación de iOS que se usará en iPads para abrir el enlace. La aplicación debe estar conectada a su proyecto desde la página Descripción general de Firebase console. |
versión mínima de la aplicación | El número de versión de la versión mínima de su aplicación que puede abrir el enlace. Esta bandera se pasa a su aplicación cuando se abre, y su aplicación debe decidir qué hacer con ella. |
DynamicLinkNavigationInfoParameters | |
---|---|
forzadoRedirectEnabled | Si se establece en '1', omita la página de vista previa de la aplicación cuando se abra Dynamic Link y, en su lugar, redirija a la aplicación o tienda. La página de vista previa de la aplicación (habilitada de forma predeterminada) puede enviar a los usuarios al destino más apropiado de manera más confiable cuando abren Dynamic Links en las aplicaciones; sin embargo, si espera que un Dynamic Link se abra solo en aplicaciones que pueden abrir Dynamic Links de manera confiable sin esta página, puede deshabilitarlo con este parámetro. Este parámetro afectará el comportamiento de Dynamic Link solo en iOS. |
DynamicLinkSocialMetaTagParámetros | |
---|---|
título | El título que se usará cuando el vínculo dinámico se comparta en una publicación social. |
descripciónTexto | La descripción que se usará cuando el vínculo dinámico se comparta en una publicación social. |
URL de la imagen | La URL de una imagen relacionada con este enlace. La imagen debe tener al menos 300x200 px y menos de 300 KB. |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
fuente medio Campaña término contenido | Parámetros de análisis de Google Play. Estos parámetros ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) se transmiten a Play Store y se agregan a la carga del enlace. |
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
token de proveedor token de afiliado token de campaña | Parámetros de análisis de iTunes Connect. Estos parámetros ( pt , at , ct ) se pasan a la App Store. |
Acortar un enlace dinámico largo
Para acortar un enlace dinámico largo, pase el enlace dinámico largo a shortenURL(url:options:)
junto con un objeto DynamicLinkComponentsOptions
si desea generar un enlace con un sufijo corto:
Rápido
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
C objetivo
[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); }];
Especificación de un esquema de URL personalizado para Dynamic Links
De forma predeterminada, Dynamic Links usa el identificador de paquete de su aplicación como el esquema de URL necesario para abrir su aplicación. Recomendamos quedarse con este valor predeterminado para mantener su implementación simple.
Sin embargo, los desarrolladores que ya utilizan un esquema de URL personalizado para otros fines pueden desear utilizar este mismo esquema de URL personalizado para sus Dynamic Links también. Si se encuentra en esta situación, puede especificar un esquema de URL diferente para sus vínculos dinámicos de Firebase siguiendo estos pasos:
- Al configurar su aplicación, asegúrese de especificar el esquema de URL predeterminado que utilizará su aplicación antes de configurar su instancia compartida de
FirebaseApp
:Rápido
Nota: Este producto de Firebase no está disponible en objetivos macOS, Mac Catalyst, tvOS o 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 }
C objetivo
Nota: Este producto de Firebase no está disponible en objetivos macOS, Mac Catalyst, tvOS o 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; }
- Cada vez que cree un vínculo dinámico, deberá especificar el esquema de URL personalizado que utiliza su aplicación. Puede hacerlo a través de la consola de Firebase, configurando
customScheme
en la API de Builder, especificando el parámetroius
en su URL o enviando el parámetroiosCustomScheme
a la API de REST.
Próximos pasos
Ahora que ha creado Dynamic Links, debe configurar su aplicación para recibir Dynamic Links y enviar a los usuarios al lugar correcto en su aplicación después de que un usuario los abra.
Para recibir Dynamic Links en su aplicación, consulte la documentación para iOS , Android , C++ y Unity .