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 lanza inmediatamente sin cargar nunca 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 Google Play Store respectivamente.

En pocas palabras, 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, esta puede abrirse directamente (si está instalada actualmente).

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

Casos de uso

Los enlaces universales y los App Links se usan más comúnmente para Campaigns de correo electrónico, ya que los correos electrónicos pueden abrirse y hacer 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 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 de ese dominio y, para iOS, qué rutas pueden abrir estas aplicaciones:

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

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

  • iOS: Se establece como “Associated Domains” en Xcode
  • Android: Se define 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 App Identifier 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 Xcode para el build target adecuado.

Paso 1b: Activa Associated Domains en tu app identifier

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

Paso 1c: Activa Associated Domains en tu proyecto Xcode

Antes de continuar, asegúrate de que tu proyecto Xcode tiene el mismo equipo seleccionado que donde acabas de registrar tu App Identifier.

  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 el equipo correcto seleccionado.
  2. Comprueba que el Bundle ID (paso 1a) de tu proyecto Xcode coincide con el utilizado para registrar el App Identifier.

Paso 1d: Añade el permiso de dominio

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

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 gestionar esto 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 sirve como una forma segura de verificar la propiedad del dominio ante 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 el ejemplo anterior, “JHGFJHHYX” es el team ID y “com.facebook.ios” es el bundle ID.
  • paths: Matriz de cadenas que especifica qué rutas se incluyen o excluyen de la asociación. Puedes usar NOT antes de la ruta para deshabilitar rutas. En este ejemplo, todos los enlaces en esta ruta irán a la web en lugar de abrir la aplicación. Puedes usar * como comodín para habilitar todas las rutas en 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 tengas listo tu archivo AASA, 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 cumple con estas directrices:

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

Paso 4: Prepara tu aplicación para manejar enlaces universales

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

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.

Paso 5: Prueba tu enlace universal

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 pidiéndote que abras 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.

Paso 1: Crea vínculos profundos

Primero, necesitas crear vínculos profundos para tu aplicación Android. Esto se puede hacer añadiendo intent filters en tu archivo AndroidManifest.xml. El intent filter 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 incluye 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.

Paso 4: Prepara tu aplicación para manejar vínculos profundos

En tu aplicación Android, necesitas manejar los vínculos profundos entrantes. Puedes hacer esto obteniendo el intent que inició tu actividad y extrayendo los datos de él.

Paso 5: Prueba tus vínculos profundos

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 socios de envío de correo electrónico, SendGrid y SparkPost, usan 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 sin problemas.

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

SendGrid

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

  1. Configura los valores de pathPrefix de tu AASA o AndroidManifest para que solo traten los enlaces con /uni/ en la ruta URL como enlaces universales.
  2. Añade el atributo universal="true" a la etiqueta anchor (<a>) de tu enlace. Esto cambia la ruta 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 URL funcionarán como enlaces universales, mientras que todos los demás enlaces funcionarán como enlaces web.

SparkPost

Para tratar un enlace de seguimiento de clics de SparkPost como un enlace universal, añade el siguiente atributo a 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 anchor de tu enlace: data-msys-sublink="custom_path".

Esta ruta personalizada te permite tratar selectivamente las URL 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.

Desactivar el seguimiento de clics enlace por enlace

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, usa 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, usa 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, usa 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 usar el editor de arrastrar y soltar para correo electrónico, introduce tu código HTML como un atributo personalizado si tu enlace está adjunto a texto, un botón o una imagen.

Atributo personalizado para un enlace de texto

SendGrid

Selecciona lo siguiente para el atributo personalizado:

  • Name: clicktracking
  • Value: off

SparkPost

Selecciona lo siguiente para el atributo personalizado:

  • Name: data-msys-clicktrack
  • Value: 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:

  • Name: clicktracking
  • Value: off
  • Type: Link

SparkPost

Selecciona lo siguiente para el atributo personalizado:

  • Name: data-msys-clicktrack
  • Value: 0
  • Type: Link

Un atributo personalizado para un botón.

Solución de problemas de enlaces universales con seguimiento de clics

Si tus enlaces universales no funcionan como se espera en tus correos electrónicos, como por ejemplo cuando el destinatario navega 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 con la configuración de tu enlace universal.

Verifica la ubicación del archivo de enlace

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 asegurarse 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 tienes las definiciones correctas para los dominios que tu aplicación tiene permitido abrir.

  • iOS: Revisa los Associated Domains configurados en Xcode para tu aplicación (paso 1c). 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 Open by default y tócalo. 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.
New Stuff!