Recibe Dynamic Links en iOS

Para recibir los Firebase Dynamic Links que creaste, debes incluir el SDK de Dynamic Links en la app y llamar a los métodos handleUniversalLink: y dynamicLinkFromCustomSchemeURL: cuando se cargue la app a fin de obtener los datos que se pasaron al Dynamic Link.

Requisitos previos

Para usar Firebase Dynamic Links, debes tener iOS 8 o una versión más reciente. Puedes orientar la app a iOS 7, pero todas las llamadas del SDK de Firebase Dynamic Links no funcionarán si la app no se ejecuta en iOS 8 o una versión más reciente.

Configura Firebase y el SDK de Dynamic Links

  1. Agrega Firebase al proyecto de iOS. Incluye el siguiente pod en el Podfile:
    pod 'Firebase/Core'
    pod 'Firebase/DynamicLinks'
  2. Ejecuta pod install y abre el archivo .xcworkspace creado.
  3. En Firebase console, abre la sección Dynamic Links. Si se te solicita, acepta las Condiciones del Servicio.
  4. 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 la app, ve a la página de configuración del proyecto de Firebase y selecciona la app para iOS.

    Para confirmar que el proyecto de Firebase tenga la configuración correcta para usar Dynamic Links en la app para iOS, visita la siguiente URL:

    https://your_subdomain.page.link/apple-app-site-association
    Si la app está conectada, el archivo apple-app-site-association contiene una referencia al prefijo de ID de la app y el ID de paquete correspondientes. Por ejemplo:
    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
    Si el campo details está vacío, vuelve a verificar que hayas especificado el prefijo de ID de la app. Ten en cuenta que el prefijo de ID de la app puede no coincidir con el ID del equipo.

Abre Dynamic Links en la app

  1. En la pestaña Información del proyecto de Xcode de la app, crea un tipo de URL nuevo para usarlo con Dynamic Links. Asigna un valor único al Identificador e ingresa el identificador del paquete en el campo Esquema de URL, que es el esquema de URL predeterminado de Dynamic Links.
  2. En la pestaña Funciones del proyecto de Xcode de la app, habilita los dominios asociados y agrega lo siguiente a la lista de Dominios asociados:
    applinks:your_subdomain.page.link
  3. Importa el módulo de Firebase en la UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  4. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu aplicación:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Luego, en el método application:continueUserActivity:restorationHandler: , controla los vínculos recibidos como vínculos universales cuando la app ya esté instalada (en iOS 9 o versiones posteriores). Para ello, sigue estos ejemplos:

    Swift

    func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
      let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        // ...
      }
    
      return handled
    }

    Objective-C

    - (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;
    }
  6. Por último, en los métodos application:openURL:sourceApplication:annotation: (iOS 8 y versiones anteriores) y application:openURL:options: (iOS 9 y versiones posteriores), administra los vínculos recibidos a través del esquema de URL personalizado de la app. Estos métodos se llaman cuando la app recibe un vínculo en iOS 8 y versiones anteriores, y cuando la app se abre por primera vez después de la instalación en cualquier versión de iOS.

    Si el Dynamic Link no se encuentra en el primer lanzamiento de la app (en cualquier versión de iOS), este método se llamará con la url de FIRDynamicLink configurada como nil, la que indica que el SDK no encontró un Dynamic Link pendiente que coincidiera.

    Swift

    @available(iOS 9.0, *)
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
      return application(app, open: url,
                         sourceApplication: options[UIApplicationOpenURLOptionsKey.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
    }

    Objective-C

    - (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;
    }

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.