Para recibir los vínculos dinámicos de Firebase que creó , debe incluir el SDK de vínculos dinámicos en su aplicación y llamar a los handleUniversalLink:
y dynamicLinkFromCustomSchemeURL:
cuando su aplicación se carga para obtener los datos pasados en el vínculo dinámico.
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 . Acepte los términos de servicio si se le solicita que lo haga.
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.
Puede confirmar que su proyecto de Firebase está configurado correctamente para usar Dynamic Links en su aplicación iOS abriendo la siguiente URL:
https://your_dynamic_links_domain/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":["NOT /_/*","/*"]}]}}
Si el campo de
details
está vacío, verifique que especificó su prefijo de ID de aplicación. Tenga en cuenta que su prefijo de ID de aplicación puede no ser el mismo que su ID de equipo.Opcional : deshabilite el uso del área de trabajo de iOS por parte del SDK de Dynamic Links.
De forma predeterminada, el SDK de Dynamic Links usa el área de trabajo para mejorar la confiabilidad de los enlaces profundos posteriores a la instalación. Mediante el uso de la mesa de trabajo, Dynamic Links puede asegurarse de que cuando un usuario abre un Dynamic Link pero necesita instalar su aplicación primero, el usuario puede ir inmediatamente al contenido vinculado original al abrir la aplicación por primera vez después de la instalación.
La desventaja de esto es que el uso de la mesa de trabajo activa una notificación en iOS 14 y versiones posteriores. Por lo tanto, la primera vez que los usuarios abren su aplicación, si el área de trabajo contiene una URL, verán una notificación de que su aplicación accedió al área de trabajo, lo que puede generar confusión.
Para deshabilitar este comportamiento, edite el archivo
Info.plist
de su proyecto Xcode y establezca la claveFirebaseDeepLinkPasteboardRetrievalEnabled
enNO
.
Abre Dynamic Links en tu aplicación
- En la pestaña Información del proyecto Xcode de su aplicación, cree un nuevo tipo de URL para usar con Dynamic Links. Establezca el campo Identificador en un valor único y el campo Esquema de URL para que sea su identificador de paquete, que es el esquema de URL predeterminado que utiliza Dynamic Links.
- En la pestaña Capacidades del proyecto Xcode de su aplicación, habilite Dominios asociados y agregue lo siguiente a la lista de Dominios asociados :
applinks:your_dynamic_links_domain
- Si desea recibir Dynamic Links con un dominio completamente personalizado , en el archivo
Info.plist
de su proyecto Xcode, cree una clave llamadaFirebaseDynamicLinksCustomDomains
y configúrela con los prefijos de URL de Dynamic Links de su aplicación. Por ejemplo:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - 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() } } } }
- A continuación, en el método
application:continueUserActivity:restorationHandler:
maneje los enlaces recibidos como Universal Links cuando la aplicación ya está instalada:Rápido
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
C objetivo
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- Finalmente, en
application:openURL:options:
maneje los enlaces recibidos a través del esquema de URL personalizado de su aplicación. Este método se llama cuando su aplicación se abre por primera vez después de la instalación.Si no se encuentra Dynamic Link en el primer lanzamiento de su aplicación, se llamará a este método con la
url
deDynamicLink
establecida ennil
, lo que indica que el SDK no pudo encontrar un Dynamic Link pendiente coincidente.Rápido
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
C objetivo
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }
Para recibir los vínculos dinámicos de Firebase que creó , debe incluir el SDK de vínculos dinámicos en su aplicación y llamar a los handleUniversalLink:
y dynamicLinkFromCustomSchemeURL:
cuando su aplicación se carga para obtener los datos pasados en el vínculo dinámico.
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 . Acepte los términos de servicio si se le solicita que lo haga.
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.
Puede confirmar que su proyecto de Firebase está configurado correctamente para usar Dynamic Links en su aplicación iOS abriendo la siguiente URL:
https://your_dynamic_links_domain/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":["NOT /_/*","/*"]}]}}
Si el campo de
details
está vacío, verifique que especificó su prefijo de ID de aplicación. Tenga en cuenta que su prefijo de ID de aplicación puede no ser el mismo que su ID de equipo.Opcional : deshabilite el uso del área de trabajo de iOS por parte del SDK de Dynamic Links.
De forma predeterminada, el SDK de Dynamic Links usa el área de trabajo para mejorar la confiabilidad de los enlaces profundos posteriores a la instalación. Mediante el uso de la mesa de trabajo, Dynamic Links puede asegurarse de que cuando un usuario abre un Dynamic Link pero necesita instalar su aplicación primero, el usuario puede ir inmediatamente al contenido vinculado original al abrir la aplicación por primera vez después de la instalación.
La desventaja de esto es que el uso de la mesa de trabajo activa una notificación en iOS 14 y versiones posteriores. Por lo tanto, la primera vez que los usuarios abren su aplicación, si el área de trabajo contiene una URL, verán una notificación de que su aplicación accedió al área de trabajo, lo que puede generar confusión.
Para deshabilitar este comportamiento, edite el archivo
Info.plist
de su proyecto Xcode y establezca la claveFirebaseDeepLinkPasteboardRetrievalEnabled
enNO
.
Abre Dynamic Links en tu aplicación
- En la pestaña Información del proyecto Xcode de su aplicación, cree un nuevo tipo de URL para usar con Dynamic Links. Establezca el campo Identificador en un valor único y el campo Esquema de URL para que sea su identificador de paquete, que es el esquema de URL predeterminado que utiliza Dynamic Links.
- En la pestaña Capacidades del proyecto Xcode de su aplicación, habilite Dominios asociados y agregue lo siguiente a la lista de Dominios asociados :
applinks:your_dynamic_links_domain
- Si desea recibir Dynamic Links con un dominio completamente personalizado , en el archivo
Info.plist
de su proyecto Xcode, cree una clave llamadaFirebaseDynamicLinksCustomDomains
y configúrela con los prefijos de URL de Dynamic Links de su aplicación. Por ejemplo:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - 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() } } } }
- A continuación, en el método
application:continueUserActivity:restorationHandler:
maneje los enlaces recibidos como Universal Links cuando la aplicación ya está instalada:Rápido
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
C objetivo
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- Finalmente, en
application:openURL:options:
maneje los enlaces recibidos a través del esquema de URL personalizado de su aplicación. Este método se llama cuando su aplicación se abre por primera vez después de la instalación.Si no se encuentra Dynamic Link en el primer lanzamiento de su aplicación, se llamará a este método con la
url
deDynamicLink
establecida ennil
, lo que indica que el SDK no pudo encontrar un Dynamic Link pendiente coincidente.Rápido
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
C objetivo
Nota: Este producto no está disponible en objetivos macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }