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 de page.link. Con los dominios personalizados, puedes crear Dynamic Links de manera similar a los siguientes 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 de 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 tu Dynamic Links y tus páginas web, vínculos universales y vínculos de la app, pero si lo haces, debes asegurarte de que tus URLs de Dynamic Link no entren en conflicto con las URLs web. Cuando configuras Dynamic Links para usar un prefijo de URL particular, todas las URLs que comienzan con ese prefijo se consideran como Dynamic Links, por lo que no puedes usar URLs con ese prefijo para dirigir a los usuarios a un contenido ordinario alojado.

Por ejemplo, si quieres crear un Dynamic Link para el recurso https://example.com/my-resource (una página web, un vínculo universal o un vínculo de aplicaciones), no puedes usar https://example.com/ como el prefijo de URL Dynamic Links porque, al hacerlo, provocaría que https://example.com/my-resource se tratara como 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, el siguiente Dynamic Links de formato largo (y los vínculos cortos equivalentes) no funcionarán como previsto porque las URLs especificadas por el parámetro link comienzan con el prefijo de URL 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 URLs 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 la consola de Firebase

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

  1. Si aún no configuraste Firebase Hosting para tu proyecto, abre la página 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 de la consola de Firebase

  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 tu 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 la CLI deFirebase (v6.5.0 o posterior).

  3. Configura tu sitio de Hosting para Dynamic Links en la archivo de tu proyecto de firebase.json. 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 mediante la configuración de la 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 URLs, las reglas de reescritura Dynamic Link no pueden contener 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
        }
      ]
    }
    

    Con la configuración anterior, puedes 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 una ruta de acceso de origen de /** para crear Dynamic Links sin prefijo de ruta de acceso, ejecuta lo siguiente:

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

    Con la regla anterior, puedes crear Dynamic Links como en el siguiente ejemplo:

    https://your-domain/link-suffix

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

    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 el 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 de 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 deseas usar el mismo desarrollo de la marca para Dynamic Links y Hosting, considera una de las siguientes opciones para el prefijo de URL 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
    } ]