Migra de Dynamic Links a App Links y vínculos universales

Esta guía de migración se enfoca en el uso de vínculos de apps y vínculos universales, que pueden usar Firebase Hosting de manera opcional para alojar tus archivos de asociación con el sitio de la app.

Esta migración reemplaza las siguientes funciones de Firebase Dynamic Links:

Función Firebase Dynamic Links Vínculos de apps / vínculos universales
Dirige a los usuarios a la tienda correcta de tu dispositivo con un solo clic en vínculo
Proporciona a los usuarios una continuación del recorrido después de descargar e instalar tu app mediante un vínculo directo diferido
Proporciona a los usuarios una experiencia contextual mediante el uso de contenido con vínculos directos en tu app (cuando ya esté instalado)
Proporciona datos de estadísticas relacionados con eventos de clic en vínculos dinámicos
Permite crear URLs de vínculos cortos

Si aún necesitas otras funciones de Firebase Dynamic Links para tu migración que no se admiten en esta guía, consulta otras situaciones de migración en la documentación en Preguntas frecuentes sobre la baja de Dynamic Links.

Supongamos que tienes un vínculo dinámico de Firebase similar a este:

Ejemplo de Dynamic Link
Nombre del vínculo Te damos la bienvenida a Example.com
Vínculo directo https://example.web.app/welcome
App para Android com.example.android
App para Apple com.example.ios
Dynamic Link largo https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Dynamic Link corto https://example.page.link/m9Mm

El objetivo de esta guía de migración es reemplazar Firebase Dynamic Links de la siguiente manera:

https://example.page.link/m9Mm

Con los vínculos directos de vínculos de App Link / Universal Link, se ve de la siguiente manera:

https://your-project-domain.web.app/welcome

Ten en cuenta que los vínculos directos de App Link / Universal Link proporcionarán lo siguiente a los usuarios:

  • Un vínculo directo en el que pueda hacer clic que abrirá la app cuando ya esté instalada
  • Una continuación del recorrido del usuario que los dirige a una parte específica de la app cuando esta se abre

Sin embargo, el vínculo directo de App Link / Universal Link no proporcionará los siguientes comportamientos para los usuarios (como lo hacían antes los vínculos dinámicos de Firebase):

  • Dirige a los usuarios a la tienda correcta para que sus dispositivos descarguen e instalen tu app
  • Brinda una continuación de su recorrido del usuario después de descargar, instalar y abrir la app por primera vez

Ten en cuenta las diferencias de comportamiento y funcionalidad de estos vínculos de apps / vínculos universales en comparación con los vínculos dinámicos de Firebase, como se indica en la tabla anterior.

Antes de comenzar

Firebase Dynamic Links usa vínculos de apps (en Android) y vínculos universales (en iOS) en su propia implementación subyacente para proporcionar funciones de vínculos directos después de que la app ya esté instalada.

En esta guía, se explica cómo crear tus propios vínculos de apps y vínculos universales mediante Firebase Hosting para reemplazar esa parte de la funcionalidad que proporciona Firebase Dynamic Links cuando migras tus vínculos de Firebase Dynamic Links a la nueva solución de migración vínculos de app / vínculos universales.

Necesitarás la siguiente información para completar la migración:

  • Los vínculos dinámicos de Firebase que quieres migrar
  • Los parámetros de URL de vínculo directo incluidos en tus vínculos dinámicos
  • El dominio que planeas usar para reemplazar tu dominio anterior de Firebase Dynamic Links (si corresponde)

Puedes usar la Guía para exportar metadatos de vínculos dinámicos para exportar tus metadatos de vínculos existentes y obtener la información que se indica más arriba.

Descripción general de los pasos para la migración

  1. Aprovisiona un dominio nuevo (si aún no tienes uno para alojar) para alojar tus archivos de configuración de App Link / Universal Link con Firebase Hosting.

  2. Crea y aloja los archivos de configuración del vínculo de la app o universal en tu dominio de hosting.

  3. Crea nuevos vínculos de apps o universales que coincidan con el esquema de vínculos directos que se usa en Firebase Dynamic Links.

  4. Actualiza tus apps para Android o iOS, y el código de la aplicación para recibir vínculos directos.

  5. Prueba tus integraciones de vínculos de apps / vínculos universales

  6. Reemplaza los vínculos dinámicos de Firebase publicados o compartidos por vínculos de apps y vínculos universales.

El primer paso será común para los flujos de migración de los vínculos de apps o de vínculos universales. El resto variará según la plataforma, así que navega a la sección de la guía que aparece a continuación según la plataforma que desees migrar primero.

Elige un dominio

El primer paso es elegir un dominio que quieras usar para tus vínculos de apps / vínculos universales. Este será el dominio que se usará para los vínculos nuevos que compartirás con tus usuarios.

Si usas Firebase Hosting, los subdominios del proyecto con los formatos your-project-domain.web.app o your-project-domain.firebaseapp.com se aprovisionan automáticamente sin costo. De manera opcional, puedes usar un dominio personalizado con o sin Firebase Hosting para alojar tus archivos de configuración de vínculos de app / vínculos universales.

Configurar Firebase Hosting

A continuación, deberás configurar tu instancia de Firebase Hosting.

Cuando termines de configurar la instancia de Firebase Hosting, tendrás un dominio similar a your-project-domain.web.app o un dominio personalizado si de preferencia.

Para usar App Links, debes alojar un archivo de configuración que ayude a establecer una asociación segura entre el dominio que se usa en tus vínculos y la app. En el caso de los vínculos de apps, este es el archivo assetlinks.json.

Pasos para crear y alojar el archivo assetlinks.json

El archivo assetlinks.json nos permite proporcionar una lista de apps autorizadas que pueden controlar el contenido del dominio web que usaremos para nuestros vínculos de apps. El archivo assetlinks.json en sí se debe alojar en la raíz del dominio web, en la ruta /.well-known.

Sigue los pasos que se indican a continuación para completar esta configuración:

  1. Crea la carpeta .well-known en la carpeta pública del directorio raíz de Firebase Hosting.

  2. Crea un archivo llamado assetlinks.json en la carpeta .well-known.

  3. Copia el siguiente contenido en el archivo assetlinks.json y anota el significado de cada uno de los campos que aparecen a continuación:

    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example.android",
        "sha256_cert_fingerprints":
          ["01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF"]
      }
    }]
    
    • namespace: se refiere al nombre de la aplicación que deseas proporcionar.
    • package_name: hace referencia al applicationId declarado en el archivo build.gradle de la app.
    • sha256_cert_fingerprints: hace referencia a la huella digital SHA256 del archivo de almacén de claves que usas para firmar la aplicación.

    Puedes utilizar el archivo debug.keystore que usa Android Studio para generar un registro sha256_cert_fingerprints para fines de depuración. Puedes encontrar el archivo en /Users/<username>/.android/debug.keystore en Mac y Linux, y en C:\Users\<username>\.android\debug.keystore en Windows.

    En este almacén de claves, puedes obtener el valor SHA256 con keytool.

    Consulta esta sección de la documentación de los vínculos de apps para obtener más instrucciones para completar este paso.

    Como alternativa, también puedes usar el Asistente de vínculos de app en Android Studio para generar el contenido del archivo assetlinks.json y configurar tu aplicación para controlar los vínculos de apps.

  4. Actualiza tu archivo firebase.json para indexar el archivo para el hosting.

    "headers": [
      {
        "source": "/.well-known/assetlinks.json",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Ahora que el archivo assetlinks.json está en su lugar, ejecuta firebase deploy para alojar los cambios.

    Ten en cuenta que deberás tener instalado Firebase CLI para ejecutar el comando de implementación anterior.

    firebase deploy --only hosting
    
  6. Para verificar el archivo assetlinks.json, ve a https://your-project-domain.web.app/.well-known/assetlinks.json.

En este paso, volverás a crear los vínculos directos de Firebase Dynamic Links con URLs normales que coincidan con el dominio nuevo que creaste para tus vínculos de apps.

Por ejemplo, supongamos que tienes el siguiente vínculo de Firebase Dynamic Links:

Ejemplo de Dynamic Link
Nombre del vínculo Te damos la bienvenida a Example.com
Vínculo directo https://example.web.app/welcome
App para Android com.example.android
App para Apple com.example.ios
Dynamic Link largo https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Dynamic Link corto https://example.page.link/m9Mm

En este caso, debes extraer el parámetro de vínculo directo, es decir, https://example.web.app/welcome y ahora lo usarás como parámetro de App Link para tu app.

Te recomendamos que repitas este proceso para cada vínculo dinámico de Firebase al que quieras migrar con vínculos de apps o universales y que repliques el esquema de vínculos directos que usaste.

Por ejemplo, consulta el siguiente conjunto de vínculos cortos de Firebase Dynamic Links, parámetros de vínculos directos y valores de vínculos directos migrados:

Vínculo corto Parámetro de vínculo directo Vínculo directo migrado
yourapp.page.link/welcome https://example.com/welcome yourapp.web.app/welcome
yourapp.page.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
yourapp.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

A continuación, deberás reemplazar cualquier instancia de Firebase Dynamic Links que se haya publicado o compartido con los nuevos vínculos directos migrados para que los usuarios hagan clic en esos vínculos de apps, en lugar de hacerlo en los anteriores.

El siguiente paso después de seleccionar un dominio, elegir un esquema de vínculos directos y migrar tus Firebase Dynamic Links a vínculos de apps es actualizar la app para Android y el código de la aplicación para recibir los nuevos vínculos directos.

Te recomendamos que sigas toda la documentación de los vínculos de apps aquí o, como alternativa, la guía de Android Studio sobre cómo configurar tu app para que maneje vínculos directos, pero los pasos principales incluyen lo siguiente:

  1. Identifica las actividades que deben administrar los vínculos directos correspondientes
  2. Agrega un filtro de intents para esas actividades en el archivo AndroidManifest.xml
  3. Recibe el vínculo directo en el código de la aplicación de tus actividades

Supongamos que quieres usar MainActivity para administrar algunos de tus vínculos directos. Para ello, deberás agregar el siguiente filtro de intents a MainActivity en el archivo AndroidManifest.xml:

<activity android:name=".MainActivity"
   android:exported="true">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   <intent-filter android:autoVerify="true">
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.DEFAULT" />
       <category android:name="android.intent.category.BROWSABLE" />
       <data android:host="example.web.app" android:scheme="http"
           android:pathPrefix="/welcome" />
       <data android:host="example.web.app" android:scheme="https"
           android:pathPrefix="/welcome" />
   </intent-filter>
</activity>

En este paso, especificarás que MainActivity es el destino para procesar vínculos directos del dominio wxample.web.app y que incluye el prefijo de ruta de bienvenida. Ten en cuenta que también deberás especificar el atributo android:autoVerify="true", que te permite designar tu app como controlador predeterminado para este tipo de vínculo.

Por último, deberás agregar el código a tu MainActivity para recuperar los datos de vínculos directos y usarlo para impulsar la experiencia de este tipo en tu app. Esto es similar a la lógica que ya codificaste en tu app cuando la integraste en Firebase Dynamic Links.

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.main)

  val  data: Uri? = intent?.data

  val toast = Toast.makeText(this, data, duration)
  toast.show()
}

Para probar los vínculos de apps que acabas de crear, ejecuta tu app en un dispositivo físico o en Android Emulator.

Deberás crear un vínculo en el que se pueda hacer clic con el dominio configurado para tus vínculos de apps y, luego, hacer clic en ese vínculo para asegurarte de que se abra en tu app y te dirija a la actividad deseada.

Como alternativa, también puedes probar tu integración de vínculos de apps con el Asistente de vínculos de apps en Android Studio o usar el siguiente comando para obtener una URL de vínculo de app que hayas configurado para garantizar inicia correctamente la actividad coincidente:

adb shell am start -a android.intent.action.VIEW -d <your_deep_link_url>

El último paso para tu migración será reemplazar tus vínculos dinámicos de Firebase publicados o compartidos por vínculos de app siempre que sea posible y seguir usando los vínculos de apps en el futuro.

Puedes completar este paso según dónde y cómo publiques tus vínculos dinámicos de Firebase. Sin embargo, para ayudarte a identificar los que existen, puedes exportar los metadatos existentes de Firebase Dynamic Links. Consulta la guía de exportación de metadatos de vínculos dinámicos.

Para usar vínculos universales, debes alojar un archivo de configuración que ayude a establecer una asociación segura entre el dominio que se usa en tus vínculos y tu app. En el caso de los vínculos universales, este es el archivo apple-app-site-association (también conocido como archivo AASA).

Pasos para crear y alojar el archivo apple-app-site-association

El archivo AASA nos permite proporcionar una lista de apps autorizadas que pueden administrar el contenido del dominio web que utilizaremos para nuestros vínculos universales. El archivo AASA debe estar alojado en la raíz del dominio web en la ruta: /.well-known.

Sigue los pasos que se indican a continuación para completar esta configuración:

  1. Crea la carpeta “.well-known” en la carpeta pública del directorio raíz de Firebase Hosting.

  2. Crea un archivo llamado “apple-app-site-association” en la carpeta “.well-known”.

  3. Copia el siguiente contenido en el archivo apple-app-site-association y toma nota del significado de cada campo que aparece a continuación:

    {
      "applinks": {
        "apps": [],
        "details": [
          {
            "appId": "$TEAM_ID.com.firebase.UniversalLinks",
            "paths": [
              "NOT /_/*",
              "/*"
            ]
          }
        ]
      }
    }
    
    • $TEAM_ID.BundleId: el nombre de aplicación completamente calificado autorizado para controlar los vínculos
  4. Actualiza tu archivo firebase.json para indexar el archivo para el hosting.

    "headers": [
      {
        "source": "/.well-known/apple-app-site-association",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Ahora que tenemos el archivo AASA, implementa Firebase para alojar los cambios.

  6. Para verificar el archivo AASA, visita https://your-project-domain.web.app/.well-known/app-app-site-association

En este paso, volverás a crear los vínculos directos de Firebase Dynamic Links con URLs de vínculo directo normales que coincidan con el dominio nuevo que creaste para tus vínculos universales.

Por ejemplo, supongamos que tienes el siguiente vínculo de Firebase Dynamic Links:

Ejemplo de Dynamic Link
Nombre del vínculo Te damos la bienvenida a Example.com
Vínculo directo https://example.web.app/welcome
App para Android com.example.android
App para Apple com.example.ios
Dynamic Link largo https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Dynamic Link corto https://example.page.link/m9Mm

En este caso, debes extraer el parámetro de vínculo directo, p. ej., https://example.web.app/welcome, y ahora lo usarás como el parámetro de vínculo universal para tu app.

Te recomendamos que repitas este proceso para cada vínculo dinámico de Firebase al que quieras migrar con vínculos de apps o universales y que repliques el esquema de vínculos directos que usaste.

Por ejemplo, consulta el siguiente conjunto de vínculos cortos de Firebase Dynamic Links, parámetros de vínculos directos y valores de vínculos directos migrados:

Vínculo corto Parámetro de vínculo directo Vínculo directo migrado
yourapp.page.link/welcome https://example.com/welcome yourapp.web.app/welcome
yourapp.page.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
yourapp.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

A continuación, deberás reemplazar todas las instancias de Firebase Dynamic Links que se hayan publicado o compartido con los nuevos vínculos directos migrados para que los usuarios hagan clic en esos vínculos universales en lugar de hacerlo en los anteriores.

El siguiente paso después de seleccionar un dominio, elegir un esquema de vínculos directos y migrar tus Firebase Dynamic Links a vínculos universales es actualizar la app para iOS y el código de la aplicación para recibir los nuevos vínculos directos.

Te recomendamos que sigas toda la documentación de vínculos universales aquí para configurar tu app para que maneje vínculos directos, pero los pasos principales incluyen los siguientes:

  1. Actualizar la configuración de tu proyecto para permitir que tu app maneje vínculos directos del dominio recién creado.

  2. Recibe el vínculo directo en el código de tu aplicación

Si quieres actualizar la configuración de tu proyecto para permitir que tu app maneje vínculos directos, deberás agregar un dominio asociado adicional a tu proyecto en Xcode para el dominio que planeas usar para alojar tu apple-app-site-associate.

Para ello:

  1. Abre Xcode
  2. Cómo seleccionar tu proyecto en el navegador de archivos
  3. Navega a la pestaña Firma y funciones de la configuración de tu proyecto
  4. Navega hacia abajo hasta la sección Dominios asociados.
  5. Haz clic en el botón + para agregar el dominio adicional a tu proyecto en el formato “applinks:”.

Por último, debes actualizar el código de tu aplicación para poder recibir los vínculos directos entrantes.

Para lograrlo, primero actualiza el archivo AppDelegate.swift para responder a un vínculo universal. Para ello, agrega el siguiente código:

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  AppDelegate.showReceivedUrl(userActivity: userActivity);
  return true
}

static func showReceivedUrl(userActivity: NSUserActivity) {
  if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
    let url = userActivity.webpageURL!
    print(url.absoluteString)
}

El código anterior anula el método de devolución de llamada de Universal Link y registra la URL del vínculo directo, si está presente.

Ahora también llamaremos al mismo método showReceivedUrl desde la clase SceneDelegate, ya que, si la app ya está abierta en el momento en que el usuario hace clic en el vínculo universal, la devolución de llamada del vínculo universal dentro de SceneDelegate será la que se invoca.

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
  AppDelegate.showReceivedUrl(userActivity: userActivity)
}

Para probar los vínculos universales que acabas de crear, ejecuta tu app en un dispositivo físico o un simulador.

Deberás crear un vínculo en el que se pueda hacer clic con el dominio configurado para tus vínculos universales y, luego, hacer clic en ese vínculo para asegurarte de que se abra en tu app y te dirija a la pantalla deseada.

Compatibilidad con banners inteligentes de apps

Te recomendamos que uses banners de apps inteligentes para proporcionar a los usuarios una experiencia similar a la de Firebase Dynamic Links.

Con los banners inteligentes, se redireccionará a los usuarios a la App Store de la ficha de tu app si esta todavía no está instalada en sus dispositivos. De manera opcional, también puedes configurar un parámetro para pasarlo a la app después de que se descargue y se instale para brindarles a los usuarios una continuación de su viaje. Si la app ya está instalada, se abrirá y se pasará el parámetro a la app para ayudarte a dirigir al usuario al contenido adecuado según el banner inteligente de app en el que hizo clic.

El último paso de tu migración será reemplazar tus Dynamic Links publicados o compartidos por vínculos universales siempre que sea posible y seguir usando los vínculos universales en el futuro.

Completar este paso variará según dónde y cómo publiques tus Firebase Dynamic Links.

Para ayudarte a realizar un seguimiento de los vínculos dinámicos de Firebase existentes que se migrarán, publicaremos una guía sobre cómo exportar los metadatos de los vínculos cortos desde Firebase Dynamic Links. Consulta nuestro documento de preguntas frecuentes sobre la baja de Dynamic Links para obtener más actualizaciones.