Configurar un dominio personalizado para enlaces dinámicos

Puede tener un mayor control sobre la marca de sus vínculos dinámicos utilizando su propio dominio en lugar de un subdominio page.link . Con dominios personalizados, puede crear enlaces dinámicos como en 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 antes link-suffix se denomina prefijo de URL y contiene tanto su dominio de Dynamic Link personalizado como un prefijo de ruta. Deberá proporcionar un prefijo de URL cuando cree enlaces dinámicos.

Configurar un dominio personalizado requiere permiso de Editor o Propietario en su proyecto de Firebase.

Usando su dominio web para enlaces dinámicos

Puede utilizar el mismo dominio para sus vínculos dinámicos y sus páginas web, vínculos universales y vínculos de aplicaciones, pero si lo hace, debe tener cuidado de que las URL de sus vínculos dinámicos no entren en conflicto con las URL de su web. Cuando configura Dynamic Links para usar un prefijo de URL particular, todas las URL que comienzan con ese prefijo se tratan como Dynamic Links, por lo que no puede usar URL con ese prefijo para apuntar a contenido alojado normal.

Por ejemplo, si desea crear un enlace dinámico al recurso https://example.com/my-resource (una página web, un enlace universal o un enlace de aplicación), no puede usar https://example.com/ como prefijo de URL de vínculos dinámicos, porque hacerlo haría que https://example.com/my-resource se tratara como un vínculo dinámico. En su lugar, debe utilizar un prefijo de URL con un dominio diferente o un prefijo de ruta diferente.

Por lo tanto, los siguientes enlaces dinámicos de formato largo (y enlaces cortos equivalentes) no funcionarán según lo previsto porque las URL especificadas por el parámetro link comienzan con el prefijo de URL del enlace dinámico, https://example.com/ :

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

Pero los siguientes enlaces dinámicos de formato largo (y enlaces cortos equivalentes) pueden funcionar porque los prefijos de URL no entran en conflicto con las URL de los 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

Configurar un dominio personalizado en Firebase console

Por lo general, puedes configurar un dominio personalizado completamente en Firebase console. Para hacerlo:

  1. Si no has configurado 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 necesario que completes los pasos indicados en este momento.

  2. Abra la página de vínculos dinámicos de Firebase console.

  3. Si no ha utilizado Dynamic Links antes, haga clic en Comenzar . De lo contrario, haga clic en Agregar prefijo de URL en el menú desplegable.

    Luego, complete el asistente de configuración, especificando el dominio y el prefijo de ruta que desea utilizar cuando se le solicite.

  4. Solo iOS : en el archivo Info.plist de su proyecto Xcode, cree una clave llamada FirebaseDynamicLinksCustomDomains y configúrela con los prefijos URL de Dynamic Links de su aplicación. Por ejemplo:

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

Configurar un dominio personalizado manualmente

En algunas situaciones, como cuando ya tiene un dominio personalizado configurado para Dynamic Links y desea agregar otro dominio, o cuando agrega un dominio que ya está conectado a un sitio de Hosting, debe configurar su dominio personalizado manualmente.

Para hacerlo:

  1. Conecte su dominio a Firebase Hosting si aún no lo ha hecho.

    Configurar su dominio con Firebase Hosting incluye la creación del archivo de configuración firebase.json en el directorio de su proyecto local.

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

  3. Configure su sitio de hosting para enlaces dinámicos en el archivo firebase.json de su proyecto. Si su proyecto tiene varios sitios, asegúrese de configurar el sitio conectado al dominio que desea utilizar.

    • Establezca appAssociation en AUTO . Con esta configuración, Hosting genera dinámicamente archivos assetlinks.json y apple-app-site-association cuando se solicitan.

    • Especifique los prefijos de ruta que desea utilizar para los vínculos dinámicos estableciendo reglas de reescritura con dynamicLinks establecidos en true . Las solicitudes a estas rutas se envían mediante proxy a Dynamic Links.

      A diferencia de las reglas que reescriben rutas a direcciones URL, las reglas de reescritura de vínculos dinámicos no pueden contener expresiones regulares.

      Si tiene varias reglas de reescritura para su sitio, tenga en cuenta que Hosting ejecuta la primera regla de reescritura que coincida con la solicitud.

    Por ejemplo:

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

    Con la configuración anterior, puede crear enlaces dinámicos con prefijos de URL como los siguientes ejemplos:

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

    Si usa este dominio solo para vínculos dinámicos, puede usar una ruta de origen de /** para crear vínculos dinámicos sin prefijo de ruta:

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

    Con la regla anterior, puede crear enlaces dinámicos como el siguiente ejemplo:

    https://your-domain/link-suffix

  4. Implemente sus cambios de configuración de hosting:

    firebase deploy --only hosting

    (opcional) Puede verificar el contenido firebase.json implementado utilizando la API REST de Hosting .

  5. Solo iOS : en el archivo Info.plist de su proyecto Xcode, cree una clave llamada FirebaseDynamicLinksCustomDomains y configúrela con los prefijos URL de Dynamic Links de su aplicación. Por ejemplo:

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

Orden de prioridad para Enlaces Dinámicos y Hosting

Para los enlaces dinámicos, tenga especial cuidado con el orden de prioridad del alojamiento .

  • Asegúrese de que el prefijo de URL de Dynamic Links no entre en conflicto con configuraciones de alojamiento de mayor prioridad (por ejemplo, el contenido estático alojado siempre tiene prioridad sobre las reescrituras).
  • Dentro del atributo rewrites , la respuesta de Hosting obedecerá la regla especificada por el primer glob source que captura la ruta solicitada .

Por ejemplo, si configura un enlace dinámico para your-domain / source-path / link-suffix pero también tiene contenido estático en your-domain / source-path /index.html , el contenido estático tiene prioridad. Un usuario final verá index.html en lugar del enlace dinámico. De manera similar, si tiene contenido estático en your-domain / source-path / link-suffix , el usuario final verá el contenido estático en lugar del enlace dinámico.

Si desea utilizar la misma marca tanto para Dynamic Links como para Hosting, considere una de las siguientes opciones para su prefijo URL de Dynamic Links:

  • Configure su atributo source para que coincida con un prefijo de ruta. Por ejemplo, si tiene un dominio personalizado de example.com , su regla de reescritura podría ser:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Configure un subdominio para usarlo con enlaces dinámicos, luego configure su atributo source para que coincida con ese subdominio. Por ejemplo, si tiene un subdominio de links.example.com , su regla de reescritura podría ser:

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