Para recibir los Dynamic Links de Firebase que creó , debe incluir el SDK de Dynamic Links en su aplicación y llamar a los métodos handleUniversalLink:
dynamicLinkFromCustomSchemeURL:
cuando se carga la aplicación para obtener los datos pasados en el Dynamic Link.
Requisitos previos
Antes de comenzar, asegúrese de agregar Firebase a su proyecto de iOS .
Configurar Firebase y el SDK de Dynamic Links
Utilice Swift Package Manager para instalar y administrar las dependencias de Firebase.
- En Xcode, con el proyecto de su aplicación abierto, navegue hasta Archivo > Agregar paquetes .
- Cuando se le solicite, agregue el repositorio SDK de las plataformas Firebase Apple:
- Elija la biblioteca de enlaces dinámicos.
- Agregue el indicador
-ObjC
a la sección Otros indicadores del vinculador de la configuración de compilación de su objetivo. - 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á automáticamente a resolver y descargar sus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Ahora, realice algunos pasos de configuración:
- En Firebase console , abre la sección Enlaces dinámicos . Acepte los términos de servicio si se le solicita que lo haga.
Asegúrese de que el ID de la App Store 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 tu aplicación, ve a la página de configuración de tu proyecto de Firebase y selecciona tu aplicación de iOS.
Puedes confirmar que tu proyecto de Firebase está configurado correctamente para usar Dynamic Links en tu aplicación de 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
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
details
está vacío, verifique que haya especificado el prefijo de ID de su aplicación. Tenga en cuenta que el prefijo de ID de su aplicación puede no ser el mismo que el ID de su equipo.Opcional : deshabilite el uso del SDK de Dynamic Links del portapapeles de iOS.
De forma predeterminada, el SDK de Dynamic Links utiliza el portapapeles para mejorar la confiabilidad de los enlaces profundos posteriores a la instalación. Al usar el portapapeles, Dynamic Links puede garantizar que cuando un usuario abra un Dynamic Link pero primero necesite instalar su aplicación, el usuario pueda ir inmediatamente al contenido original vinculado cuando abra la aplicación por primera vez después de la instalación.
La desventaja de esto es que el uso del portapapeles activa una notificación en iOS 14 y versiones posteriores. Entonces, la primera vez que los usuarios abren su aplicación, si el portapapeles contiene una URL, verán una notificación de que su aplicación accedió al portapapeles, lo que puede causar confusión.
Para deshabilitar este comportamiento, edite el archivo
Info.plist
de su proyecto Xcode y establezca la claveFirebaseDeepLinkPasteboardRetrievalEnabled
enNO
.
Abra enlaces dinámicos en su aplicación
- En la pestaña Información del proyecto Xcode de su aplicación, cree un nuevo tipo de URL para usarlo con enlaces dinámicos. Establezca el campo Identificador en un valor único y el campo del esquema de URL como su identificador de paquete, que es el esquema de URL predeterminado utilizado por 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 totalmente personalizado , en el archivo
Info.plist
de su proyecto Xcode, cree una clave llamadaFirebaseDynamicLinksCustomDomains
y configúrela con los prefijos 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 utilice el delegado de su aplicación. Por ejemplo, para usar Cloud Firestore y autenticación:Interfaz de usuario rápida
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
FirebaseApp
en el métodoapplication(_:didFinishLaunchingWithOptions:)
del delegado de su aplicación:Interfaz de usuario rápida
// 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 está utilizando SwiftUI, debe crear un delegado de aplicación y adjuntarlo a su estructura
App
medianteUIApplicationDelegateAdaptor
oNSApplicationDelegateAdaptor
. También debes desactivar el cambio de delegados de aplicaciones. Para obtener más información, consulte las instrucciones de SwiftUI .Interfaz de usuario rápida
@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
application:continueUserActivity:restorationHandler:
:, maneje los enlaces recibidos como enlaces universales cuando la aplicación ya esté instalada:Rápido
Nota: Este producto no está disponible en dispositivos 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 dispositivos 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:
maneja los enlaces recibidos a través del esquema de URL personalizado de tu aplicación. Este método se llama cuando la aplicación se abre por primera vez después de la instalación.Si el vínculo dinámico no se encuentra en el primer inicio de su aplicación, se llamará a este método con la
url
delDynamicLink
configurada ennil
, lo que indica que el SDK no pudo encontrar un vínculo dinámico pendiente coincidente.Rápido
Nota: Este producto no está disponible en dispositivos 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 dispositivos 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; }