Skip to content

Enlaces universales y App Links

Este artículo describe cómo configurar los enlaces universales de Apple y los Android App Links.

Los enlaces universales de Apple y los Android App Links son mecanismos diseñados para proporcionar una transición fluida entre el contenido web y las aplicaciones móviles. Mientras que los enlaces universales son específicos de iOS, los Android App Links cumplen el mismo propósito para las aplicaciones Android.

Los enlaces universales (iOS) y los App Links (Android) son enlaces web estándar (http://mydomain.com) que apuntan tanto a una página web como a un contenido dentro de una aplicación.

Cuando se abre un enlace universal o un App Link, el sistema operativo comprueba si alguna aplicación instalada está registrada para ese dominio. Si se encuentra una aplicación, se abre de inmediato sin cargar la página web. Si no se encuentra ninguna aplicación, la URL web se carga en el navegador web predeterminado del usuario, que también podría estar configurado para redirigir a la App Store o a Google Play Store, respectivamente.

En términos sencillos, los enlaces universales permiten que un sitio web asocie sus páginas web con pantallas específicas de la aplicación, de modo que cuando un usuario hace clic en un enlace a una página web que corresponde a una pantalla de la aplicación, la aplicación puede abrirse directamente (si la aplicación está instalada actualmente).

Esta tabla describe las diferencias clave entre los enlaces universales y los vínculos profundos tradicionales:

  Enlaces universales y App Links Vínculos profundos
Compatibilidad de plataforma iOS (versión 9 y posteriores) y Android (versión 6.0 y posteriores) Se utilizan en varios sistemas operativos móviles
Propósito Vinculan fácilmente contenido web y de aplicación en dispositivos iOS y Android Vincular a contenido específico de la aplicación
Función Dirige a páginas web o contenido de la aplicación según el contexto Abre pantallas específicas de la aplicación
Instalación de la aplicación Abre la aplicación si está instalada, de lo contrario abre contenido web Requiere que la aplicación esté instalada

Ejemplos

Los enlaces universales y los App Links se utilizan con más frecuencia en las campañas de correo electrónico, ya que los correos electrónicos pueden abrirse y hacerse clic desde dispositivos de escritorio y móviles.

Algunos canales no funcionan bien con estos enlaces. Por ejemplo, las notificaciones push, los mensajes dentro de la aplicación y las Content Cards deben usar vínculos profundos basados en esquema (mydomain://).

Requisitos previos

Para usar enlaces universales y App Links:

  • Tu sitio web debe ser accesible a través de HTTPS
  • Tu aplicación debe estar disponible en la App Store (iOS) o Google Play Store (Android)

Para que las aplicaciones admitan enlaces universales o App Links, tanto iOS como Android requieren que se aloje un archivo de permisos especial en el dominio del enlace. Este archivo contiene definiciones de qué aplicaciones pueden abrir enlaces desde ese dominio y, para iOS, qué rutas pueden abrir esas aplicaciones:

  • iOS: Archivo Apple App Site Association (AASA)
  • Android: Archivo Digital Asset Links

Además de este archivo de permisos, existen definiciones codificadas de qué dominios de enlace la aplicación puede abrir, que se configuran dentro de la aplicación:

  • iOS: Se establecen como “Associated Domains” en Xcode
  • Android: Se definen en el archivo AndroidManifest.xml de la aplicación

Esta asociación bidireccional dominio-aplicación es necesaria para que un enlace universal o App Link funcione y evita que cualquier aplicación secuestre enlaces de un dominio en particular o que cualquier dominio abra una aplicación en particular.

Estos pasos están adaptados de la documentación para desarrolladores de Apple. Para más información, consulta Allowing apps and websites to link to your content.

Paso 1: Configura los permisos de tu aplicación

Paso 1a: Registra tu aplicación

  1. Ve a developer.apple.com e inicia sesión.
  2. Haz clic en Certificates, Identifiers & Profiles.
  3. Haz clic en Identifiers.
  4. Si aún no tienes un identificador de aplicación registrado, haz clic en + para crear uno. a. Introduce un Name. Puede ser lo que quieras. b. Introduce el Bundle ID. Puedes encontrar tu bundle ID en la pestaña General de tu proyecto de Xcode para el destino de compilación adecuado.

Paso 1b: Activa Associated Domains en tu identificador de aplicación

  1. En tu identificador de aplicación existente o recién creado, localiza la sección App Services.
  2. Selecciona Associated Domains.
  3. Haz clic en Save.

Sección App Services

Paso 1c: Activa Associated Domains en tu proyecto de Xcode

Antes de continuar, asegúrate de que tu proyecto de Xcode tenga seleccionado el mismo equipo que donde acabas de registrar tu identificador de aplicación.

  1. En Xcode, ve a la pestaña Capabilities de tu archivo de proyecto.
  2. Activa Associated Domains.
Consejo de solución de problemas

Si ves el error “An App ID with Identifier ‘your-app-id’ is not available. Please enter a different string”, haz lo siguiente:

  1. Comprueba que tienes seleccionado el equipo correcto.
  2. Comprueba que el Bundle ID (paso 1a) de tu proyecto de Xcode coincide con el utilizado para registrar el identificador de aplicación.

Paso 1d: Añade el permiso de dominio

En la sección de dominios, añade la etiqueta de dominio correspondiente. Debes añadir el prefijo applinks:. En este caso, puedes ver que hemos añadido applinks:yourdomain.com.

Sección Associated Domains

Paso 1e: Confirma que el archivo de permisos está incluido en la compilación

En el explorador del proyecto, asegúrate de que tu nuevo archivo de permisos esté seleccionado en Target Membership.

Xcode debería gestionarlo automáticamente.

Paso 2: Configura tu sitio web para alojar el archivo AASA

Para asociar el dominio de tu sitio web con tu aplicación nativa en iOS, necesitas alojar el archivo Apple App Site Association (AASA) en tu sitio web. Este archivo funciona como una forma segura de verificar la propiedad del dominio en iOS. Antes de iOS 9, los desarrolladores podían registrar cualquier esquema URI para abrir sus aplicaciones, sin ninguna verificación. Sin embargo, con AASA, este proceso se ha vuelto mucho más seguro y fiable.

El archivo AASA contiene un objeto JSON con una lista de aplicaciones y las rutas URL del dominio que deben incluirse o excluirse como enlaces universales. Aquí tienes un ejemplo de archivo AASA:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "JHGFJHHYX.com.facebook.ios",
        "paths": [
          "*"
        ]
      }
    ]
  }
}
  • appID: Se construye combinando el Team ID de tu aplicación (ve a https://developer.apple.com/account/#/membership/ para obtener el team ID) y el Bundle Identifier. En este ejemplo, “JHGFJHHYX” es el team ID, y “com.facebook.ios” es el bundle ID.
  • paths: Matriz de cadenas que especifican qué rutas se incluyen o excluyen de la asociación. Puedes usar NOT antes de la ruta para desactivar rutas. En este ejemplo, todos los enlaces de esta ruta irán a la web en lugar de abrir la aplicación. Puedes usar * como comodín para habilitar todas las rutas de un directorio y ? para coincidir con un solo carácter (como /archives/201?/ para coincidir con todos los números de 2010 a 2019).

Paso 3: Aloja el archivo AASA en tu dominio

Cuando tu archivo AASA esté listo, puedes alojarlo en tu dominio en https://<<yourdomain>>/apple-app-site-association o en https://<<yourdomain>>/.well-known/apple-app-site-association.

Sube el archivo apple-app-site-association a tu servidor web HTTPS. Puedes colocar el archivo en la raíz de tu servidor o en el subdirectorio .well-known. No añadas .json al nombre del archivo.

Al alojar el archivo AASA, asegúrate de que el archivo siga estas directrices:

  • Se sirve a través de HTTPS.
  • Usa el tipo MIME application/json.
  • No supera los 128 KB (requisito a partir de iOS 9.3.1)

Cuando un usuario toca un enlace universal en un dispositivo iOS, el dispositivo inicia la aplicación y le envía un objeto NSUserActivity. La aplicación puede entonces consultar el objeto NSUserActivity para determinar cómo fue iniciada.

Para admitir enlaces universales en tu aplicación, sigue estos pasos:

  1. Añade un permiso que especifique los dominios que tu aplicación admite.
  2. Actualiza el delegado de tu aplicación para responder adecuadamente cuando reciba el objeto NSUserActivity.

En Xcode, abre la sección Associated Domains en la pestaña Capabilities y añade una entrada para cada dominio que tu aplicación admita, con el prefijo applinks:. Por ejemplo, applinks:www.mywebsite.com.

Añade el enlace universal a un correo electrónico y envíalo a un dispositivo de prueba. Pegar un enlace universal directamente en el campo de URL de Safari no hará que la aplicación se abra automáticamente. Si haces esto, tendrás que deslizar manualmente el sitio web hacia abajo para que aparezca un aviso en la parte superior preguntándote si deseas abrir la aplicación correspondiente.

Estos pasos están adaptados de la documentación para desarrolladores de Android. Para más información, consulta Add Android App Links y Create Deep Links to App Content.

Primero, necesitas crear vínculos profundos para tu aplicación Android. Esto se puede hacer añadiendo filtros de intención en tu archivo AndroidManifest.xml. El filtro de intención debe incluir la acción VIEW y la categoría BROWSABLE, junto con la URL de tu sitio web en el elemento de datos.

Paso 2: Asocia tu aplicación con tu sitio web

Necesitas asociar tu aplicación con tu sitio web. Esto se puede hacer creando un archivo Digital Asset Links. Este archivo debe estar en formato JSON e incluir detalles sobre las aplicaciones Android que pueden abrir enlaces a tu sitio web. Debe colocarse en el directorio .well-known de tu sitio web.

Paso 3: Actualiza el archivo de manifiesto de tu aplicación

En tu archivo AndroidManifest.xml, añade un elemento meta-data dentro del elemento application. El elemento meta-data debe tener un atributo android:name de “asset_statements” y un atributo android:resource que apunte a un archivo de recursos con una matriz de cadenas que incluya la URL de tu sitio web.

En tu aplicación Android, necesitas gestionar los vínculos profundos entrantes. Puedes hacerlo obteniendo la intención que inició tu actividad y extrayendo los datos de ella.

Finalmente, puedes probar tus vínculos profundos. Envíate un enlace a través de una aplicación de mensajería o correo electrónico y haz clic en él. Si todo está configurado correctamente, debería abrir tu aplicación.

Nuestros partners de envío de correo electrónico utilizan dominios de seguimiento de clics para envolver todos los enlaces e incluir parámetros de URL para el seguimiento de clics en los correos electrónicos de Braze.

Por ejemplo, un enlace como https://www.example.com se convierte en algo como https://links.email.example.com/uni/wf/click?upn=abcdef123456….

Para permitir que los enlaces de correo electrónico con seguimiento de clics funcionen como enlaces universales o App Links, necesitarás realizar alguna configuración adicional. Asegúrate de añadir el dominio de seguimiento de clics (links.email.example.com) como un dominio que la aplicación tiene permitido abrir. Además, el dominio de seguimiento de clics debe servir los archivos AASA (iOS) o Digital Asset Links (Android). Esto ayudará a garantizar que los enlaces de correo electrónico con seguimiento de clics funcionen fácilmente.

Si no quieres que cada enlace con seguimiento de clics sea un enlace universal o App Link, puedes especificar qué enlaces deben ser enlaces universales según el partner de envío de correo electrónico. Consulta las siguientes pestañas para más detalles.

Para tratar un enlace con seguimiento de clics de SendGrid como un enlace universal:

  1. Configura tus valores de pathPrefix en AASA o AndroidManifest para tratar solo los enlaces con /uni/ en la ruta de la URL como enlaces universales.
  2. Añade el atributo universal="true" a la etiqueta ancla (<a>) de tu enlace. Esto cambia la ruta de URL del enlace envuelto para incluir /uni/.

Por ejemplo:

1
<a href=”https://www.example.com” universal="true">
  1. Asegúrate de que tu aplicación esté configurada para manejar los enlaces envueltos correctamente. Consulta el artículo de SendGrid sobre Resolving SendGrid Click Tracking Links y sigue los pasos para tu sistema operativo. Este artículo contiene código de ejemplo para iOS y Android.

Con esta configuración, los enlaces con /uni/ en la ruta de URL funcionarán como enlaces universales, mientras que todos los demás enlaces funcionarán como enlaces web.

Para tratar un enlace con seguimiento de clics de SparkPost como un enlace universal, añade el siguiente atributo en la sección de atributos del editor de arrastrar y soltar para correo electrónico, o edita manualmente el HTML del enlace para incluir el siguiente atributo en la etiqueta ancla de tu enlace: data-msys-sublink="custom_path".

Esta ruta personalizada te permite tratar selectivamente las URLs con ese valor como un enlace universal.

Por ejemplo:

1
<a href=”https://www.example.com” data-msys-sublink="open-in-app">

Luego, asegúrate de que tu aplicación esté configurada para manejar la ruta personalizada correctamente. Consulta el artículo de SparkPost sobre Using SparkPost click tracking on deep links. Este artículo contiene código de ejemplo para iOS y Android.

Utiliza rutas personalizadas para añadir segmentos de ruta a las URLs de seguimiento de clics de correo electrónico. Esto crea patrones de URL predecibles que los sistemas operativos móviles pueden reconocer para enlaces universales y App Links.

Cuando los usuarios tocan enlaces de correo electrónico en dispositivos móviles, las rutas personalizadas te ayudan a controlar si los enlaces se abren en tu aplicación móvil principal, una aplicación especializada o el navegador móvil (por ejemplo, páginas de productos, programas de fidelización, enlaces para cancelar suscripción o páginas legales).

Para tratar un enlace con seguimiento de clics de Amazon SES como un enlace universal o App Link:

  1. Añade atributos ses:custom-path a tus etiquetas ancla en el HTML del correo electrónico, o añade el atributo en la sección Atributos del editor de arrastrar y soltar para correo electrónico. La ruta personalizada se inserta en la URL de seguimiento de clics envuelta.

Por ejemplo:

1
2
3
4
5
6
7
8
<!-- Opens main shopping app -->
<a href="https://yourstore.com/product" ses:custom-path="shop">Shop Now</a>
<!-- Opens loyalty app -->
<a href="https://yourstore.com/rewards" ses:custom-path="rewards">My Rewards</a>
<!-- Opens specialized app -->
<a href="https://yourstore.com/limited" ses:custom-path="limited">Limited Edition</a>
<!-- Stays in browser -->
<a href="https://yourstore.com/unsubscribe" ses:no-track>Unsubscribe</a>

Asegúrate de que tus rutas personalizadas cumplan estos requisitos:

  • Formato: Solo caracteres alfanuméricos, puntos, guiones bajos y guiones
  • Longitud: 1–32 caracteres
  • Distinción entre mayúsculas y minúsculas: Las rutas distinguen entre mayúsculas y minúsculas para cumplir con los requisitos del sistema operativo móvil
  1. Confirma que tus URLs de seguimiento envueltas incluyan el segmento de ruta personalizada. Sin el atributo, los enlaces rastreados usan track.yourstore.com/CL0/{encodedUrl}/.... Con el atributo, siguen este formato: track.yourstore.com/CL1/{customPath}/{encodedUrl}/...

Por ejemplo:

  • track.yourstore.com/CL1/shop/...
  • track.yourstore.com/CL1/rewards/...
  1. Configura tus archivos de asociación de sitio en tu dominio de seguimiento de clics para que las rutas coincidan con /CL1/{customPath}/.

iOS (Apple App Site Association):

1
2
3
4
5
6
7
8
9
10
11
12
{
  "applinks": {
    "apps": [],
    "details": [{
      "appID": "TEAMID.com.yourcompany.mainapp",
      "paths": ["/CL1/shop/*", "/CL1/rewards/*"]
    }, {
      "appID": "TEAMID.com.yourcompany.limitedapp",
      "paths": ["/CL1/limited/*"]
    }]
  }
}

Android (Digital Asset Links):

1
2
3
4
5
6
7
8
[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.yourcompany.mainapp",
    "sha256_cert_fingerprints": ["..."]
  }
}]

Android hace coincidir las rutas en tu aplicación en lugar de en assetlinks.json. Establece android:pathPrefix="/CL1/{customPath}/" en el filtro de intención en tu AndroidManifest.xml para cada ruta personalizada que tu aplicación maneje.

Asegúrate de que tu aplicación esté configurada para manejar estos enlaces envueltos. Añade tu dominio de seguimiento de clics a los dominios asociados de tu aplicación (iOS) o filtros de intención (Android), y aloja el archivo AASA o Digital Asset Links en ese dominio como se describió anteriormente en este artículo.

Puedes desactivar el seguimiento de clics para enlaces específicos añadiendo código HTML a tu mensaje de correo electrónico para el editor HTML o a un bloque HTML para el editor de arrastrar y soltar.

SendGrid

Si tu proveedor de servicios de correo electrónico es SendGrid, utiliza el código HTML clicktracking=off de esta manera:

<a clicktracking=off href="[INSERT https LINK HERE]">click here</a>

SparkPost

Si tu proveedor de servicios de correo electrónico es SparkPost, utiliza el código HTML data-msys-clicktrack="0" de esta manera:

<a data-msys-clicktrack="0" href="[INSERT https LINK HERE]">click here</a>

Amazon SES

Si tu proveedor de servicios de correo electrónico es Amazon SES, utiliza el código HTML ses:no-track de esta manera:

<a ses:no-track href="[INSERT https LINK HERE]">click here</a>

Editor de arrastrar y soltar

Al utilizar el editor de correo electrónico de arrastrar y soltar, introduce tu código HTML como un atributo personalizado si tu enlace está adjunto a texto, un botón o una imagen.

SendGrid

Selecciona lo siguiente para el atributo personalizado:

  • Nombre: clicktracking
  • Valor: off

SparkPost

Selecciona lo siguiente para el atributo personalizado:

  • Nombre: data-msys-clicktrack
  • Valor: 0

Un atributo personalizado para un enlace de texto.

Atributo personalizado para un botón o imagen

SendGrid

Selecciona lo siguiente para el atributo personalizado:

  • Nombre: clicktracking
  • Valor: off
  • Tipo: Link

SparkPost

Selecciona lo siguiente para el atributo personalizado:

  • Nombre: data-msys-clicktrack
  • Valor: 0
  • Tipo: Link

Un atributo personalizado para un botón.

Si tus enlaces universales no funcionan como se espera en tus correos electrónicos, como cuando navegan al destinatario desde su aplicación de correo electrónico al navegador web antes de finalmente redirigir a la aplicación, consulta estos consejos para solucionar problemas de tu configuración de enlaces universales.

Outlook muestra [?it= o texto de URL sin formato en lugar de un botón

Outlook puede mostrar texto de llamada a la acción como [?it= o imprimir parte del href cuando un enlace no utiliza un esquema de URL válido http:// o https://. Los esquemas personalizados, los esquemas faltantes o las URLs mal formadas no se tratan como hipervínculos, por lo que el cliente muestra el texto del atributo en su lugar. Confirma que cada botón, enlace de imagen y URL rastreada use un destino https:// (o http://) completo. Esto aplica tanto a enlaces universales como a enlaces web estándar.

Asegúrate de que el archivo AASA (iOS) o el archivo Digital Asset Links (Android) esté ubicado en el lugar correcto:

  • iOS: https://click.tracking.domain/.well-known/apple-app-site-association
  • Android: https://click.tracking.domain/.well-known/assetlinks.json

Es importante asegurarte de que estos archivos siempre sean accesibles públicamente. Si no puedes acceder a ellos, es posible que hayas omitido un paso en la configuración de enlaces universales para correo electrónico.

Verifica las definiciones de dominio

Asegúrate de que tengas las definiciones correctas para los dominios que tu aplicación tiene permitido abrir.

  • iOS: Revisa los dominios asociados configurados en Xcode para tu aplicación (Paso 1c: Activar los dominios asociados en tu proyecto de Xcode). Comprueba que el dominio de seguimiento de clics esté incluido en esa lista.
  • Android: Abre la página de información de la aplicación (mantén presionado el icono de la aplicación y haz clic en ⓘ). Dentro del menú de información de la aplicación, localiza Abrir de forma predeterminada y toca esa opción. Esto debería mostrar una pantalla con todos los enlaces verificados que la aplicación tiene permitido abrir. Comprueba que el dominio de seguimiento de clics esté incluido en esa lista.

Si cada enlace en un correo electrónico abre tu aplicación, incluidos los enlaces que esperas que se abran en un navegador, los valores de paths del AASA (iOS) o pathPrefix de Android en tu dominio de seguimiento de clics coinciden con todo el dominio (por ejemplo * o /*).

Limita esos patrones a las URLs que deben abrir la aplicación. Para SendGrid, haz coincidir /uni/ y añade universal="true" solo en esos enlaces. Consulta Enlaces universales, App Links y seguimiento de clics.

El dominio de seguimiento no puede servir archivos .well-known

En algunos casos, tu dominio de seguimiento de clics puede no ser capaz de alojar los archivos .well-known requeridos debido a limitaciones del ESP o restricciones de infraestructura. Si no puedes alojar el archivo AASA o Digital Asset Links en tu dominio de seguimiento, considera las siguientes opciones:

  • Desactivar selectivamente el seguimiento de clics en URLs de vínculos profundos: Puedes desactivar el seguimiento de clics para enlaces universales específicos para que vayan directamente a tu dominio principal (donde puedes alojar el archivo AASA o Digital Asset Links). Ten en cuenta que este método puede causar pérdida de análisis de clics para esos enlaces específicos. Consulta Desactivar el seguimiento de clics enlace por enlace para obtener instrucciones.
  • Colocar un CDN delante del subdominio de seguimiento: Si necesitas cobertura completa de seguimiento de clics y vinculación en profundidad, puedes colocar un CDN (como Cloudflare o CloudFront) delante de tu subdominio de seguimiento. Configura el CDN para servir los archivos .well-known localmente y redirigir todo el tráfico restante a tu ESP. Este enfoque es más complejo, pero te da control total sobre el seguimiento de clics y los enlaces universales.

Si los enlaces universales o App Links funcionan correctamente en tu espacio de trabajo de producción pero fallan en tu espacio de trabajo de desarrollo o pruebas, verifica que el dominio de la dirección de correo electrónico de envío coincida con el dominio de seguimiento configurado en la configuración de correo electrónico de cada espacio de trabajo. Una configuración inconsistente entre espacios de trabajo puede causar que los enlaces se comporten de manera diferente incluso cuando se utilizan las mismas plantillas de correo electrónico y archivos AASA o Digital Asset Links.

Para comprobar tu configuración de correo electrónico:

  1. Ve a Configuración > Preferencias de correo electrónico en el panel de Braze.
  2. Revisa la Configuración de correo electrónico saliente en Configuración de envío.
  3. Confirma que tu dominio de envío y dominio de seguimiento estén correctamente alineados para el espacio de trabajo donde los enlaces no funcionan.

Si tu dominio de envío difiere entre espacios de trabajo, asegúrate de que cada espacio de trabajo tenga los registros de DNS apropiados configurados y que tus archivos AASA (iOS) o Digital Asset Links (Android) sean accesibles desde cada dominio de seguimiento.

New Stuff!