Configura un dominio personalizado para Dynamic Links

Puedes aumentar el control sobre el desarrollo de la marca de tus Dynamic Links si usas tu propio dominio en lugar de un subdominio page.link. Con los dominios personalizados, puedes crear Dynamic Links similares a los de estos ejemplos:

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

La parte de la URL que aparece antes de link-suffix se denomina prefijo de URL y contiene el dominio personalizado del Dynamic Link y un prefijo de ruta de acceso. Deberás proporcionar un prefijo de URL cuando crees Dynamic Links.

Debes tener el permiso de editor o propietario en tu proyecto de Firebase para configurar un dominio personalizado.

Usa tu dominio web para Dynamic Links

Puedes usar el mismo dominio para Dynamic Links y las páginas web, los vínculos universales y los vínculos de apps. Sin embargo, en este caso, debes asegurarte de que las URLs de los Dynamic Links no entren en conflicto con las URLs web. Cuando configuras Dynamic Links a fin de que usen un prefijo de URL determinado, todas las URLs que comienzan con ese prefijo se consideran Dynamic Links, por lo que no puedes usar las URLs que lo contienen para apuntar a contenido alojado común.

Por ejemplo, si deseas crear un Dynamic Link al recurso https://example.com/my-resource (una página web, un vínculo universal o de app), no puedes usar https://example.com/ como el prefijo de la URL de Dynamic Links, ya que se trataría a https://example.com/my-resource como si fuera un Dynamic Link. En lugar de eso, debes usar un prefijo de URL que tenga un dominio o prefijo de ruta de acceso distinto.

Por lo tanto, los siguientes Dynamic Links de formato largo (y los vínculos cortos equivalentes) no funcionarán correctamente, ya que las URL que especifica el parámetro link comienzan por el prefijo de URL de Dynamic Link, https://example.com/:

 https://example.com/?link=https://example.com/my-resource
 https://example.com/?link=https://example.com/resources/my-resource

No obstante, los siguientes Dynamic Links en formato largo (y los vínculos cortos equivalentes) funcionarán correctamente, ya que los prefijos de URL no entran en conflicto con las URL de link:

 https://link.example.com/?link=https://example.com/my-resource
 https://example.com/links/?link=https://example.com/my-resource
 https://ex.amp.le/?link=https://example.com/my-resource

Configura un dominio personalizado en Firebase console

Puedes configurar un dominio personalizado completamente en Firebase console. Para ello, deberás hacer lo siguiente:

  1. Si aún no has configurado Firebase Hosting para tu proyecto, abre la página de Hosting de Firebase console, haz clic en Comenzar y sigue las instrucciones de configuración. No es obligatorio completar los pasos indicados en este momento.

  2. Abre la página de Dynamic Links en Firebase console.

  3. Si nunca has usado Dynamic Links, haz clic en Comenzar. De lo contrario, haz clic en Agregar prefijo de URL, en el menú desplegable.

    Luego, completa el asistente de configuración y, cuando se te solicite hacerlo, especifica el dominio y el prefijo de ruta de acceso que quieres usar.

  4. Solo para iOS: En el archivo Info.plist de tu proyecto de Xcode, crea una clave con el nombre FirebaseDynamicLinksCustomDomains y configúrala con los prefijos de URL de Dynamic Links de la app. Por ejemplo:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/link</string>
      <string>https://example.com/promos</string>
    </array>
    

Configura un dominio personalizado de forma manual

En algunas situaciones, como cuando ya configuraste un dominio personalizado para Dynamic Links y quieres agregar otro o cuando vas a agregar un dominio que ya está conectado a un sitio de Hosting, debes configurar el dominio personalizado de forma manual.

Para ello, deberás hacer lo siguiente:

  1. Si aún no lo has hecho, conecta el dominio a Firebase Hosting.

    Configurar tu dominio con Firebase Hosting incluye crear el archivo de configuración firebase.json en el directorio de tu proyecto local.

  2. Actualiza a la última versión de Firebase CLI (v6.5.0 o posterior).

  3. Configura tu sitio de Hosting para Dynamic Links en el archivo firebase.json de tu proyecto. Si el proyecto tiene muchos sitios, asegúrate de configurar el sitio que está conectado al dominio que quieres usar.

    • Establece appAssociation en AUTO. Con esta configuración, Hosting generará de forma dinámica los archivos assetlinks.json y apple-app-site-association cuando se soliciten.

    • Especifica los prefijos de ruta de acceso que deseas usar para Dynamic Links. Para ello, configura las reglas de reescritura con dynamicLinks establecido en true. Las solicitudes que se envían a esas rutas de acceso se dirigen mediante proxies a Dynamic Links.

      A diferencia de las reglas que reescriben las rutas de acceso hacia las URL, las reglas de reescritura de Dynamic Links no pueden incluir expresiones regulares.

      Si tienes varias reglas de reescritura en tu sitio, ten en cuenta que Hosting ejecuta la primera regla de reescritura que coincide con la solicitud.

    Por ejemplo:

    "hosting": {
      // ...
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/promos/**",
          "dynamicLinks": true
        },
        {
          "source": "/links/share/**",
          "dynamicLinks": true
        }
      ]
    }
    

    La configuración anterior te permite crear Dynamic Links con prefijos de URL similares a estos ejemplos:

    https://your-domain/promos/link-suffix
    https://your-domain/links/share/link-suffix
    

    Si usas este dominio solo para Dynamic Links, puedes usar la ruta de acceso de origen de /** a fin de crear Dynamic Links sin prefijo de ruta de acceso:

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    La regla anterior te permite crear Dynamic Links similares al de este ejemplo:

    https://your-domain/link-suffix

  4. Implementa los cambios en la configuración de Hosting con este comando:

    firebase deploy --only hosting

    Puedes verificar el contenido que se implementó de firebase.json con la API de REST para Hosting (opcional).

  5. Solo para iOS: En el archivo Info.plist de tu proyecto de Xcode, crea una clave con el nombre FirebaseDynamicLinksCustomDomains y configúrala con los prefijos de URL de Dynamic Links de la app. Por ejemplo:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/promos</string>
      <string>https://example.com/links/share</string>
    </array>
    

Orden de prioridad para Dynamic Links y Hosting

En el caso de Dynamic Links, debes tener muy en cuenta el orden de prioridad de hosting.

  • Debes asegurarte de que tu prefijo de URL de Dynamic Links no entre en conflicto con las configuraciones de hosting de prioridad más alta. Por ejemplo, el contenido estático alojado siempre tiene prioridad sobre las reescrituras.
  • Dentro del atributo rewrites, la respuesta de Hosting seguirá la regla especificada por el primer glob de source que capture la ruta de acceso solicitada.

Por ejemplo, si configuras un Dynamic Link para your-domain/source-path/link-suffix, pero también tienes contenido estático en your-domain/source-path/index.html, este último tiene prioridad. Un usuario final verá index.html en vez del Dynamic Link. De la misma forma, si tienes contenido estático en your-domain/source-path/link-suffix, el usuario final verá ese contenido en lugar del Dynamic Link.

Si quieres usar el mismo desarrollo de la marca en Dynamic Links y Hosting, te recomendamos una de las siguientes opciones para el prefijo de URL de Dynamic Links:

  • Configura tu atributo source para que coincida con un prefijo de ruta de acceso. Por ejemplo, si tienes un dominio personalizado de example.com, la regla de reescritura podría ser la siguiente:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Configura un subdominio para usar con Dynamic Links y, luego, configura el atributo source para que coincida con ese subdominio. Por ejemplo, si tienes un subdominio de links.example.com, la regla de reescritura podría ser la siguiente:

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]