Abrir una aplicación instalada desde un navegador se conoce como “enlace profundo” y, con esta guía, aprenderás a establecer enlaces profundos en tu Android App desde la Web móvil. Nos centraremos exclusivamente en cómo activar la apertura de una App desde la página de un sitio web, en lugar de hacer clic en un enlace dentro de otras aplicaciones.
Android es, por mucho, una de las plataformas más fragmentadas que los desarrolladores han tenido que administrar, debido a la decisión de Google de obligar a los fabricantes de dispositivos a ser responsables de transferir el sistema operativo, lo que requiere compatibilidad con versiones anteriores y soporte de una gran cantidad de dispositivos. En este ecosistema, nosotros, los desarrolladores de app, nos dejan para recoger las piezas. Por desgracia, los enlaces profundos en Android no son diferentes. A lo largo de los años, hemos observado una gran cantidad de requisitos técnicos que deben utilizarse en función de las circunstancias y el contexto del usuario.
Ten en cuenta que Branch implementará toda esta complejidad para ti, alojará los enlaces profundos e incluso te dará análisis sólidos detrás de clics, aperturas de app y eventos de embudo hacia abajo. Puedes jugar gratis con los enlaces de Branch registrándote aquí. Recomendamos encarecidamente usar nuestras herramientas en lugar de intentar reconstruirlas desde cero, ya que construir enlaces profundos es increíblemente complicado.
Descripción general de los enlaces de Android App
Los enlaces de Android App son la solución de Android para llevar a los usuarios a contenido específico dentro de la aplicación. Permiten a los usuarios omitir el diálogo de desambiguación donde seleccionan si desean ver contenido en la Web móvil o en la app, como en la siguiente imagen:
Los enlaces de App usan URL HTTP asociadas con el dominio de tu sitio web y permiten que una App específica sea el propietario predeterminado de un tipo de enlace determinado. Esto garantiza que ninguna otra app pueda usar tus enlaces para enlaces profundos. Ten en cuenta que, con los enlaces de aplicaciones, los usuarios que no tengan instalada tu app se dirigirán a tu sitio web móvil. Por lo tanto, para disfrutar de la mejor experiencia de usuario, configura tu sitio web móvil para gestionar tu enlace de aplicación y evitar que los usuarios vean una página de 404.
Pasos para crear enlaces de Android App:
1. Crea filtros de intención para enlaces entrantes y define valores en tu manifiesto
Para enlazar con el contenido de tu app, crea un filtro de intención con los siguientes elementos y valores de atributo que se usarán en tu etiqueta Actividad dentro de tu manifiesto:
- <action> : especificar la acción de intención VER para que se pueda acceder al filtro de intención desde la Búsqueda de Google.
- <data> : la etiqueta <data> debe incluir el atributo android:scheme. Las etiquetas de datos representan un formato de URI que se resuelve en la actividad.
- Categoría BROWSABLE: requerida para que el filtro de intención sea accesible desde un navegador web. Sin ella, hacer clic en un enlace en un navegador no puede dirigir a los usuarios a tu app.
- Categoría DEFAULT: para permitir que tu app responda a intenciones implícitas.
Aquí hay un ejemplo de un filtro de intención dentro de un manifiesto para enlaces profundos, utilizando el URI “https://www.example.com/gizmos” :
<intent-filter android_label="@string/filter_view_http_gizmos"> <action android_name="android.intent.action.VIEW" /> <categoría android_name="android.intent.category.DEFAULT" / > <categoría android_name="android.intent.category.BROWSABLE" /> <!-- Acepta URI que comienzan con "https://www.example.com/gizmos" --> <data android_scheme="https" android_host="www.example.com" android_pathPrefix="/gizmos" /> <!-- ten en cuenta que se requiere el "/" inicial para pathPrefix--> </intent-filter>
Ten en cuenta que puedes usar http pero luego agregar el archivo XML de configuración de red con cleartextTrafficPermitted=true . Más información aquí.
Agregar filtros de intención con URI para el contenido de actividad al manifiesto de la app permite a Android enrutar cualquier intención que tenga URI coincidentes a tu app.
2. Lee los datos de intenciones entrantes
Utiliza los datos de tu intención de determinar el contenido para mostrar a tus usuarios. Llama a los métodos getData() y getAction() para recuperar los datos y la acción asociada con la intención entrante.
Aquí hay un fragmento de código que muestra cómo recuperar datos de una intención en Java:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData(); }
3. Verifica la propiedad de tu app y sitio web
Debes verificar la propiedad tanto de tu app como de tu sitio web para establecer enlaces profundos entre tus usuarios y el contenido de tu app. Sigue estos pasos:
Solicita la verificación automática del enlace de la app en tu manifiesto.
Esto le pedirá al sistema Android que verifique que tu app pertenece al dominio de URL utilizado en sus filtros de intención.
Configura android:autoVerify=”true” en cualquiera de los filtros de intención de URL web del manifiesto de tu app que incluyan la categoría android.intent.action.VIEW intent action y android.intent.category.BROWSABLE.
Declara la relación entre tu sitio web y tus filtros de intención
Para indicar las Android app asociadas con las intenciones de tu sitio web y de la URL de la app, comienza publicando un archivo JSON de enlaces de activos digitales en https://domain.name/.well-known/assetlinks.json.
Necesitarás la siguiente información para publicar el archivo JSON de enlaces de activos digitales:
- package_name : el ID de la app declarado en el archivo build.gradle de la app.
- sha256_cert_fingerprints: las huellas digitales SHA256 del certificado de firma de tu app. Puedes utilizar el siguiente comando para generar la huella digital a través de la herramienta clave Java:
$ keytool -list -v -keystore my-release-key.keystore
Asegúrate de que tu archivo assetlinks.json sea:
- servido con content-type application/json.
- accesible a través de una conexión HTTPS, independientemente de si los filtros de intención de tu app declaran HTTPS como el esquema de datos.
- accesible sin redireccionamientos (sin redireccionamientos 301 o 302) y accesible mediante bots (tu archivo robots.txt debe permitir el rastreo de /.well-known/assetlinks.json).
- publicado en cada dominio si los enlaces de tu app admiten varios dominios host
Por último, confirma que el archivo JSON de enlaces de activos digitales esté alojado correctamente y definido mediante la API de enlaces de activos digitales.
4. Prueba las intenciones de URL
Después de verificar los sitios web asociados con tu app y asegurarte de que el archivo JSON alojado es válido, instala la app en tu dispositivo. Espera al menos 20 segundos para completar el proceso de verificación asíncrona. Usa el siguiente comando para verificar si el sistema verificó tu app y estableció las políticas de manejo de enlaces correctas:
adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://domain.name:optional_port"
También puedes revisar una lista de los vínculos gestionados por todas tus app con el siguiente comando:
adb shell dumpsys package domain-preferred-apps
¡Y listo! Dicho esto, los enlaces profundos en Android son increíblemente complicados y hay casos extremos en todas partes. Pensarás que todo va bien hasta que te encuentres con casos límite únicos y enlaces rotos. Es por eso que deberías usar una herramienta como Branch, para salvarte de esa pesadilla y asegurarte de que tus enlaces funcionen en todas partes. Contáctanos para descubrir cómo puedes implementar enlaces profundos que transformen tu experiencia de usuario, reduzcan el churn y aumenten el ROI.