Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Recibir enlaces dinámicos en iOS

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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 .

Use Swift Package Manager para instalar y administrar las dependencias de Firebase.

  1. En Xcode, con su proyecto de aplicación abierto, vaya a Archivo > Agregar paquetes .
  2. Cuando se le solicite, agregue el repositorio del SDK de las plataformas Apple de Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Elija la biblioteca de Dynamic Links.
  5. 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.
  6. Cuando termine, Xcode comenzará a resolver y descargar automáticamente sus dependencias en segundo plano.

Ahora, realice algunos pasos de configuración:

  1. En Firebase console , abra la sección Dynamic Links . Acepte los términos de servicio si se le solicita que lo haga.
  2. 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.

  3. 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 causar confusión.

    Para deshabilitar este comportamiento, edite el archivo Info.plist de su proyecto Xcode y establezca la clave FirebaseDeepLinkPasteboardRetrievalEnabled en NO .

  1. 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.
  2. 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
  3. Si desea recibir Dynamic Links con un dominio completamente personalizado , en el archivo Info.plist de su proyecto Xcode, cree una clave llamada FirebaseDynamicLinksCustomDomains 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
    
    
  4. Importe el módulo FirebaseCore en su UIApplicationDelegate , 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:

    Rápido

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    C objetivo

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  5. Configure una instancia compartida de FirebaseApp en el método application(_:didFinishLaunchingWithOptions:) del delegado de su aplicación:

    Rápido

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    C objetivo

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. 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;
    }
  7. 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 de DynamicLink establecida en nil , 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;
    }