Cómo servir correctamente los archivos de App Link para iOS y Android

Explica cómo alojar y servir correctamente el archivo `apple-app-site-association` │ para los enlaces universales de iOS y el archivo `assetlinks.json` para los enlaces de aplicaciones de Android.

Intermediate

Para servir correctamente los archivos de App Link de iOS y Android, debes configurar tanto tu sitio web como tus aplicaciones móviles. Esto implica crear y alojar archivos específicos en tu servidor web y realizar las configuraciones correspondientes en tus proyectos de iOS y Android.

Enlaces universales de iOS

En el caso de iOS, debes configurar los enlaces universales, que permiten a los usuarios pulsar un enlace a tu sitio web y ser redirigidos sin problemas a tu aplicación instalada.

  1. Crea el archivo «apple-app-site-association»:

    • Crea un archivo JSON llamado apple-app-site-association (sin la .json extensión).
    • Este archivo declara qué URL puede gestionar tu aplicación.
    • El archivo debe contener un applinks diccionario. En su interior applinks, incluye una apps matriz y una details matriz. Cada objeto de la details matriz debe especificar el appID (tu ID de equipo de Apple seguido del identificador de paquete de tu aplicación) y una matriz de paths que tu aplicación pueda gestionar. Puedes utilizar comodines (* y ?) para la coincidencia de rutas.
    • Ejemplo de contenido de «apple-app-site-association»: json { "applinks": { "apps": [], "details": [ { "appID": "YOUR_TEAM_ID.com.yourcompany.yourapp", "paths": [ "/path/to/content/*", "/another/path/*", "NOT /path/to/exclude" ] } ] } }
  2. Aloja el archivo en tu servidor web:

    • El apple-app-site-association archivo debe estar alojado en la raíz de tu dominio o dentro del .well-known subdirectorio (por ejemplo, https://yourdomain.com/apple-app-site-association o https://yourdomain.com/.well-known/apple-app-site-association).
    • Debe servirse a través de HTTPS con un certificado SSL válido.
    • El archivo debe ser accesible directamente sin redireccionamientos HTTP (301 o 302).
    • El tipo MIME del archivo debe ser application/json.
    • El tamaño del archivo sin comprimir no debe superar los 128 KB.
    • Si admite varios dominios o subdominios, cada dominio necesita su propio apple-app-site-association archivo.
  3. Configura tu aplicación iOS:

    • En Xcode, habilita la función «Dominios asociados» para tu proyecto.
    • Añade los dominios que admitirá tu aplicación a la lista de «Dominios asociados», precedidos por applinks: (por ejemplo, applinks:yourdomain.com).
    • Implementa los métodos necesarios en el AppDelegate o SceneDelegate de tu aplicación para gestionar las URL de enlaces universales entrantes.

Enlaces de aplicaciones de Android

En Android, los enlaces de aplicaciones ofrecen una experiencia similar y fluida, permitiendo que los enlaces verificados se abran directamente en tu aplicación sin un cuadro de diálogo de desambiguación.

  1. Crea el archivo `assetlinks.json`:

    • Crea un archivo JSON llamado assetlinks.json.
    • Este archivo establece una asociación de confianza entre tu sitio web y tu aplicación de Android.
    • El archivo debe contener una matriz JSON con un objeto que especifique el relation (por ejemplo, delegate_permission/common.handle_all_urls), target (incluyendo namespace como android_app, el package_name, y el sha256_cert_fingerprints del certificado de firma de tu aplicación).
    • Puedes obtener la huella digital SHA256 utilizando el keytool o en la Consola de Google Play si utilizas Play App Signing.
    • Ejemplo de contenido de `assetlinks.json`: json [{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.yourcompany.yourapp", "sha256_cert_fingerprints": ["AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99:00:AA:BB:CC:DD:EE:FF"] } }]
  2. Aloja el archivo en tu servidor web:

    • El assetlinks.json archivo debe estar alojado en https://yourdomain.com/.well-known/assetlinks.json.
    • Debe servirse a través de HTTPS con un certificado SSL válido.
    • El archivo debe ser accesible directamente sin redireccionamientos HTTP (301 o 302).
    • El tipo MIME del archivo debe ser application/json.
    • Si los enlaces de tu aplicación admiten varios dominios de host, debes publicar el assetlinks.json archivo en cada dominio.
  3. Configura tu aplicación de Android:

    • Añade un <intent-filter> a la AndroidManifest.xml para las URL que quieras gestionar.
    • Incluye android:autoVerify="true" en el <intent-filter>. Esto le indica a Android que verifique el dominio del host.
    • El <intent-filter> debería incluir ACTION_VIEW, BROWSABLE, y DEFAULT categorías.
    • Especifique el <data> esquema (por ejemplo, https), el host y cualquier prefijo o patrón de ruta opcional.
    • Ejemplo de filtro de intenciones «AndroidManifest.xml»: xml <activity android:name=".MainActivity"> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="yourdomain.com" android:pathPrefix="/path/to/content" /> </intent-filter> </activity>
    • Gestiona la Intent en la actividad de tu aplicación para extraer datos de la URL y navegar al contenido adecuado.

Prácticas recomendadas generales

  • HTTPS es obligatorio tanto para los enlaces universales de iOS como para los enlaces de aplicaciones de Android.
  • Evita los redireccionamientos al servir estos archivos de asociación.
  • Realiza pruebas exhaustivas en dispositivos reales y utiliza herramientas de validación (por ejemplo, la API de enlaces de activos digitales de Google para Android y diversos validadores en línea para archivos AASA de iOS) para garantizar una configuración correcta.
  • Asegúrate de que eres el propietario de los dominios para los que estás configurando los enlaces de la aplicación.