Migre de Dynamic Links a App Links & Enlaces universales

Esta guía de migración se centra en el uso de App Links y Universal Links y, opcionalmente, en el uso de Firebase Hosting para alojar los archivos de asociación de su aplicación y su sitio.

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

Característica Enlaces dinámicos de Firebase Enlaces de aplicaciones/Enlaces universales
Dirige a los usuarios a la tienda correcta para su dispositivo con un solo clic en el enlace.
Proporcione a los usuarios una continuación del viaje después de descargar e instalar su aplicación mediante un enlace profundo diferido.
Proporcione a los usuarios una experiencia contextual utilizando contenido con enlaces profundos en su aplicación (cuando ya esté instalada)
Proporcionar datos analíticos relacionados con eventos de clic en enlaces dinámicos.
Proporcionar la posibilidad de crear URL de enlaces cortos.

Si continúas necesitando otras funciones de Firebase Dynamic Link para tu migración que no son compatibles con esta guía, consulta otros escenarios de migración en la documentación de preguntas frecuentes sobre la obsolescencia de Dynamic Links .

Suponga que tiene un enlace dinámico de Firebase que se parece a este:

Ejemplo de enlace dinámico
Nombre del enlace Bienvenido a Ejemplo.com
Enlace profundo https://example.web.app/welcome
aplicación Android com.example.android
aplicación de manzana com.example.ios
Enlace dinámico largo https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Enlace dinámico corto https://example.page.link/m9Mm

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

https://example.page.link/m9Mm

Con enlaces profundos de App Link/Universal Link que se ven así:

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

Tenga en cuenta que el enlace profundo App Link/Universal Link proporcionará lo siguiente a sus usuarios:

  • Un enlace profundo en el que pueden hacer clic y que abrirá su aplicación cuando ya esté instalada
  • Una continuación del recorrido del usuario que lo lleva a una parte específica de su aplicación cuando se abre.

Sin embargo, el enlace profundo App Link/Universal Link no proporcionará los siguientes comportamientos para sus usuarios (que Firebase Dynamic Links proporcionaba anteriormente):

  • Llevar a los usuarios a la tienda correcta para que su dispositivo descargue e instale su aplicación.
  • Proporcionar una continuación del recorrido del usuario después de descargar, instalar y abrir la aplicación por primera vez.

Tenga en cuenta las diferencias en el comportamiento y la funcionalidad de estos enlaces de aplicaciones/enlaces universales en comparación con los enlaces dinámicos de Firebase que se indican en la tabla anterior.

Antes de que empieces

Firebase Dynamic Links utiliza App Links (en Android) y Universal Links (en iOS) en su propia implementación subyacente para proporcionar funcionalidad de enlaces profundos una vez que su aplicación ya esté instalada.

Esta guía explica cómo crear sus propios App Links y Universal Links usando Firebase Hosting para reemplazar esa parte de la funcionalidad proporcionada por Firebase Dynamic Links mientras migra sus Firebase Dynamic Links a la nueva solución de migración App Links/Universal Links.

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

  • Los enlaces dinámicos de Firebase que deseas migrar
  • Los parámetros de URL de enlace profundo incluidos en sus enlaces dinámicos
  • El dominio que planeas usar para reemplazar tu dominio anterior de Firebase Dynamic Links (si corresponde)

Puede utilizar la guía Exportar metadatos de enlaces dinámicos para exportar los metadatos de sus enlaces existentes y obtener la información mencionada anteriormente.

Descripción general de los pasos de migración

  1. Proporcione un nuevo dominio (si aún no tiene uno que desee usar) para alojar sus archivos de configuración de App Link/Universal Link usando Firebase Hosting.

  2. Cree y aloje sus archivos de configuración de App Link/Universal Link en su dominio de alojamiento.

  3. Cree nuevos enlaces de aplicaciones/enlaces universales que coincidan con el esquema de enlaces profundos utilizado en sus enlaces dinámicos de Firebase.

  4. Actualice sus aplicaciones de Android/iOS y el código de la aplicación para recibir enlaces profundos.

  5. Probando las integraciones de enlaces de aplicaciones/enlaces universales.

  6. Reemplace sus Firebase Dynamic Links publicados o compartidos con App Links y Universal Links.

El primer paso será común tanto para los flujos de migración de App Links como para Universal Link. El resto variará según la plataforma, así que navegue hasta la sección de la guía a continuación según la plataforma que desee migrar primero.

Elige un dominio

El primer paso es elegir un dominio que le gustaría usar para sus enlaces de aplicaciones/enlaces universales. Este será el dominio que se utilizará para los nuevos enlaces que compartirá con sus usuarios.

Si usa Firebase Hosting , los subdominios de proyecto con el formato your-project-domain .web.app o your-project-domain .firebaseapp.com se aprovisionan automáticamente sin costo alguno. Opcionalmente, también puedes usar un dominio personalizado con o sin Firebase Hosting para alojar tus archivos de configuración de App Link/Universal Link.

Configurar alojamiento Firebase

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

Cuando haya terminado de configurar su instancia de Firebase Hosting, tendrá un dominio similar a your-project-domain .web.app `, o un dominio personalizado si lo prefiere.

Para utilizar App Links, debe alojar un archivo de configuración que ayude a establecer una asociación segura entre el dominio utilizado en sus enlaces y su aplicación. Para App Links, este es el archivo assetlinks.json .

Pasos para crear y alojar el archivo activelinks.json

El archivo assetlinks.json nos permite proporcionar una lista de aplicaciones autorizadas que pueden manejar el contenido del dominio web que usaremos para nuestros enlaces de aplicaciones. El archivo activelinks.json debe estar alojado en la raíz del dominio web en la ruta: /.well-known .

Siga los pasos a continuación para completar esta configuración:

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

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

  3. Copie el siguiente contenido en su archivo activelinks.json, tomando nota del significado de cada campo 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 desea proporcionar
    • package_name : se refiere al ID de aplicación declarado en el archivo build.gradle de la aplicación.
    • sha256_cert_fingerprints : se refiere a la huella digital SHA256 del archivo de almacén de claves que utiliza para firmar la aplicación.

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

    Desde este almacén de claves, puede recuperar el valor SHA256 utilizando la herramienta de claves.

    Consulte esta sección de la documentación de App Links para obtener más instrucciones sobre cómo completar este paso.

    Alternativamente, también puede utilizar el Asistente de App Links en Android Studio para generar el contenido del archivo activelinks.json y configurar su aplicación para manejar App Links.

  4. Actualice su archivo firebase.json para indexarlo para alojamiento.

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

    Tenga en cuenta que necesitará tener Firebase CLI instalado para poder ejecutar el comando de implementación anterior.

    firebase deploy --only hosting
    
  6. Verifique el archivo activelinks.json yendo a https:// your-project-domain .web.app/.well-known/assetlinks.json

En este paso, recreará los vínculos profundos de sus Firebase Dynamic Links utilizando URL de vínculos profundos normales que coincidan con el nuevo dominio que creó para sus App Links.

Entonces, por ejemplo, digamos que tiene el siguiente enlace dinámico de Firebase:

Ejemplo de enlace dinámico
Nombre del enlace Bienvenido a Ejemplo.com
Enlace profundo https://example.web.app/welcome
aplicación Android com.example.android
aplicación de manzana com.example.ios
Enlace dinámico largo https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Enlace dinámico corto https://example.page.link/m9Mm

En este caso, extraerá el parámetro de vínculo profundo, es decir, https://example.web.app/welcome y ahora lo usará como parámetro de vínculo de aplicación para su aplicación.

Querrá repetir este proceso para cada Firebase Dynamic Link al que desee migrar usando App Links/Universal Links y replicar el esquema de vínculo profundo que utilizó.

Por ejemplo, consulte el siguiente conjunto de enlaces cortos, parámetros de enlaces profundos y valores de enlaces profundos migrados de Firebase Dynamic Links:

Enlace corto Parámetro de enlace profundo Enlace profundo migrado
yourapp.page.link/bienvenido https://ejemplo.com/bienvenido yourapp.web.app/welcome
yourapp.page.link/c7sn https://ejemplo.com/main/?p=23&t=1 tuaplicación.web.app/main/?p=23&t=1
tuapp.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

A continuación, deberá reemplazar cualquier instancia de Firebase Dynamic Links que se haya publicado o compartido con los nuevos enlaces profundos migrados para que los usuarios hagan clic en esos App Links en lugar de en los Firebase Dynamic Links anteriores.

El siguiente paso después de seleccionar un dominio, elegir un esquema de vínculos profundos y migrar sus vínculos dinámicos de Firebase a vínculos de aplicaciones es actualizar su aplicación de Android y el código de la aplicación para recibir los nuevos vínculos profundos.

Recomendamos seguir la documentación completa de App Links aquí o, alternativamente, la guía de Android Studio sobre cómo configurar su aplicación para manejar enlaces profundos, pero los pasos principales incluyen:

  1. Identificar qué actividades deben manejar los respectivos enlaces profundos.
  2. Agregar un filtro de intención para esas actividades en su archivo AndroidManifest.xml
  3. Recibir el enlace profundo en el código de aplicación de sus actividades

Digamos que deseas utilizar MainActivity para manejar algunos de tus enlaces profundos. Para hacer esto, deberá agregar el siguiente filtro de intención a MainActivity en su 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, está especificando que MainActivity es el destino para manejar enlaces profundos desde el dominio wxample.web.app y que incluye el prefijo de ruta /welcome. Tenga en cuenta que también deberá especificar el atributo android:autoVerify="true", que le permite designar su aplicación como el controlador predeterminado para este tipo de enlace determinado.

Finalmente, deberá agregar el código en su MainActivity para recuperar los datos del enlace profundo y usarlos para impulsar la experiencia del enlace profundo en su aplicación. Esto es similar a la lógica que quizás ya haya codificado en su aplicación cuando la integró con 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()
}

Puedes probar los enlaces de aplicaciones que acabas de crear ejecutando tu aplicación en un dispositivo físico o en el emulador de Android .

Deberá crear un enlace en el que se pueda hacer clic utilizando el dominio configurado para sus enlaces de aplicación y luego hacer clic en ese enlace para asegurarse de que se abra en su aplicación y lo lleve a la actividad deseada.

Alternativamente, también puedes probar tu integración de App Links usando el Asistente de App Links en Android Studio, o usar el siguiente comando para una URL de App Link que hayas configurado para asegurarte de que inicia la actividad coincidente correctamente:

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

El último paso para su migración será reemplazar sus Firebase Dynamic Links publicados o compartidos con App Links siempre que sea posible y continuar usando App Links en el futuro.

Completar este paso variará dependiendo de dónde y cómo publiques tus Firebase Dynamic Links, pero para ayudarte a rastrear cuáles existen, puedes exportar tus metadatos de Firebase Dynamic Link existentes. Consulte la guía Exportar metadatos de enlaces dinámicos .

Para utilizar enlaces universales, debe alojar un archivo de configuración que ayude a establecer una asociación segura entre el dominio utilizado en sus enlaces y su aplicación. Para enlaces 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 aplicaciones autorizadas que pueden manejar los contenidos del dominio web que usaremos para nuestros enlaces universales. El archivo AASA debe estar alojado en la raíz del dominio web en la ruta: /.well-known.

Siga los pasos a continuación para completar esta configuración:

  1. Cree la carpeta " .well-known " en la carpeta pública en su directorio raíz de Firebase Hosting.

  2. Cree un archivo llamado " apple-app-site-association " en la carpeta ".well-known".

  3. Copie el siguiente contenido en su archivo apple-app-site-association, tomando nota del significado de cada campo a continuación:

    {
      "applinks": {
        "apps": [],
        "details": [
          {
            "appId": "$TEAM_ID.com.firebase.UniversalLinks",
            "paths": [
              "NOT /_/*",
              "/*"
            ]
          }
        ]
      }
    }
    
    • $TEAM_ID.BundleId: el nombre completo de la aplicación autorizada para manejar los enlaces
  4. Actualice su archivo firebase.json para indexarlo para alojamiento.

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

  6. Verifique el archivo AASA yendo a https:// your-project-domain .web.app/.well-known/app-app-site-association

En este paso, recreará los vínculos profundos de sus vínculos dinámicos de Firebase utilizando URL de vínculos profundos normales que coincidan con el nuevo dominio que creó para sus vínculos universales.

Entonces, por ejemplo, digamos que tiene el siguiente enlace dinámico de Firebase:

Ejemplo de enlace dinámico
Nombre del enlace Bienvenido a Ejemplo.com
Enlace profundo https://example.web.app/welcome
aplicación Android com.example.android
aplicación de manzana com.example.ios
Enlace dinámico largo https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Enlace dinámico corto https://example.page.link/m9Mm

En este caso, extraerá el parámetro de enlace profundo, es decir, https://example.web.app/welcome y ahora lo utilizará como parámetro de enlace universal para su aplicación.

Querrá repetir este proceso para cada Firebase Dynamic Link al que desee migrar usando App Links/Universal Links y replicar el esquema de vínculo profundo que utilizó.

Por ejemplo, consulte el siguiente conjunto de enlaces cortos, parámetros de enlaces profundos y valores de enlaces profundos migrados de Firebase Dynamic Links:

Enlace corto Parámetro de enlace profundo Enlace profundo migrado
yourapp.page.link/bienvenido https://ejemplo.com/bienvenido yourapp.web.app/welcome
yourapp.page.link/c7sn https://ejemplo.com/main/?p=23&t=1 tuaplicación.web.app/main/?p=23&t=1
tuapp.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

A continuación, deberá reemplazar cualquier instancia de Firebase Dynamic Links que se haya publicado o compartido con los nuevos enlaces profundos migrados para que los usuarios hagan clic en esos enlaces universales en lugar de en los Firebase Dynamic Links anteriores.

El siguiente paso después de seleccionar un dominio, elegir un esquema de vínculos profundos y migrar sus vínculos dinámicos de Firebase a vínculos universales es actualizar su aplicación iOS y el código de la aplicación para recibir los nuevos vínculos profundos.

Recomendamos seguir la documentación completa de Universal Links aquí sobre cómo configurar su aplicación para manejar enlaces profundos, pero los pasos principales incluyen:

  1. Actualice la configuración de su proyecto para permitir que su aplicación maneje enlaces profundos desde su dominio recién creado.

  2. Reciba el enlace profundo en el código de su aplicación

Para actualizar la configuración de su proyecto para permitir que su aplicación maneje enlaces profundos, deberá agregar un dominio asociado adicional a su proyecto en xCode para el dominio que ahora planea usar para alojar su sitio de aplicación Apple. archivo asociado.

Esto se puede hacer mediante:

  1. Abriendo Xcode
  2. Seleccionar su proyecto en el navegador de archivos
  3. Navegando a la pestaña Firma y Capacidades de la configuración de su proyecto
  4. Navegue hasta la sección Dominios asociados
  5. Al hacer clic en el botón + para agregar el dominio adicional a su proyecto en el formato "applinks: ".

Finalmente, debe actualizar el código de su aplicación para poder recibir los enlaces profundos entrantes.

Para lograr esto, primero actualice el archivo AppDelegate.swift para responder a un enlace universal agregando 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 enlace profundo, si está presente.

Ahora también llamaremos al mismo método showReceivedUrl desde la clase SceneDelegate, ya que si la aplicación ya está abierta cuando el usuario hizo clic en el enlace universal, la devolución de llamada del enlace universal dentro de SceneDelegate será la que se invoque.

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

Puedes probar los enlaces universales que acabas de crear ejecutando tu aplicación en un dispositivo físico o en un simulador .

Deberá crear un enlace en el que se pueda hacer clic utilizando el dominio configurado para sus enlaces universales y luego hacer clic en ese enlace para asegurarse de que se abra en su aplicación y lo lleve a la pantalla deseada en su aplicación.

Compatible con banners de aplicaciones inteligentes

Recomendamos encarecidamente utilizar Smart App Banners como una forma de brindarles a sus usuarios una experiencia similar a Firebase Dynamic Links.

Al utilizar los banners de aplicaciones inteligentes, sus usuarios serán llevados a la App Store para ver su lista de aplicaciones si su aplicación aún no está instalada en su dispositivo. Opcionalmente, también puede configurar un parámetro para pasarlo a su aplicación después de descargarla e instalarla para brindarles a sus usuarios una continuación de su viaje. Si su aplicación ya está instalada, se abrirá pasando el parámetro a su aplicación para ayudar a su usuario a navegar hasta el contenido apropiado según el banner de aplicación inteligente en el que hizo clic.

El último paso para su migración será reemplazar sus Firebase Dynamic Links publicados o compartidos con Universal Links siempre que sea posible y continuar usando Universal Links en el futuro.

Completar este paso variará dependiendo de dónde y cómo publique sus Firebase Dynamic Links.

Para ayudarlo a realizar un seguimiento de los Firebase Dynamic Links existentes que se van a migrar, publicaremos una guía sobre cómo exportar sus metadatos de enlaces cortos desde Firebase Dynamic Links. Vuelva a consultar nuestro documento de preguntas frecuentes sobre la desactivación de enlaces dinámicos para obtener más actualizaciones.