Cómo añadir enlaces a aplicaciones Android con redireccionamientos

Aprenda a configurar los enlaces de aplicaciones Android para gestionar redireccionamientos y enlaces profundos │ usuarios directamente al contenido de su aplicación.

Intermediate

Los enlaces a aplicaciones Android proporcionan una experiencia de usuario fluida al permitir que las URL HTTP/HTTPS se abran directamente en tu aplicación, sin pasar por el cuadro de diálogo de desambiguación del navegador. Además, si tu aplicación no está instalada, redirigen elegantemente al navegador. Su implementación, especialmente con redireccionamientos, implica varios pasos clave.

A continuación te explicamos cómo añadir enlaces a aplicaciones Android con redireccionamientos:

1. Configure su AndroidManifest.xml

Debe declarar un filtro de intención en su archivo AndroidManifest.xml para la actividad que gestionará los enlaces entrantes. Este filtro de intención indica al sistema Android qué URL puede abrir su aplicación.

  • android:autoVerify="true": Este atributo crucial permite la verificación automática de su aplicación como el controlador predeterminado para los patrones de URL especificados.
  • <action android:name="android.intent.action.VIEW" />: Esto especifica que se puede acceder al filtro de intención desde la Búsqueda de Google y gestiona las acciones de visualización.
  • <category android:name="android.intent.category.DEFAULT" />: Esto permite que tu aplicación responda a intenciones implícitas.
  • <category android:name="android.intent.category.BROWSABLE" />: Es necesario para que se pueda acceder al filtro de intención desde un navegador web, lo que permite a los usuarios abrir tu aplicación desde un enlace profundo en un navegador.
  • Etiqueta <data>: Esto define el formato URI que puede manejar su aplicación. Deberá especificar el esquema (por ejemplo, https), el host (su dominio) y, opcionalmente, una ruta o un prefijo de ruta.

Ejemplo de entrada AndroidManifest.xml:

<activity android:name=".DeepLinkActivity">
 <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="www.example.com"
 android:pathPrefix="/products" />  </intent-filter>
</activity> 

Esta configuración significa que tu aplicación puede gestionar URL como https://www.example.com/products/item123.

2. Declara la asociación del sitio web con assetlinks.json

Para verificar que su aplicación es la propietaria legítima de las URL que dice manejar, debe alojar un archivo JSON de enlaces de activos digitales en su sitio web. Este archivo establece una asociación segura entre su sitio web y su aplicación Android.

  1. Crear assetlinks.json: El archivo debe contener el nombre del paquete de su aplicación y la huella digital del certificado SHA256.

    json [{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.your.packagename", "sha256_cert_fingerprints": ["TU_HUELLA_SHA256"] } }] * package_name: Tu ID de aplicación Android. * sha256_cert_fingerprints: La huella digital SHA256 de la clave de firma utilizada para crear tu APK. Puedes obtenerla en Google Play Console (si utilizas Play App Signing) o mediante el comando keytool para almacenes de claves locales.

  2. Alojar el archivo: Sube este archivo assetlinks.json a tu servidor web en https://your.domain.com/.well-known/assetlinks.json. Asegúrate de que sea accesible a través de HTTPS.

3. Gestiona la intención entrante en tu actividad

En la actividad de Android especificada en tu AndroidManifest.xml, recuperarás los datos de Intent entrantes para determinar qué contenido mostrar.

class DeepLinkActivity : AppCompatActivity() {
 override fun onCreate(savedInstanceState: Bundle?) {  super.onCreate(savedInstanceState)  setContentView(R.layout.activity_deep_link)  intent?.data?.let { uri ->
 // uri será algo así como https://www.example.com/products/item123  val productId = uri.lastPathSegment // Extrae «item123»
 // Utiliza productId para recuperar y mostrar contenido relevante
 findViewById<TextView>(R.id.textView).text = "Product ID: $productId"  }  }

 // Gestionar nuevas intenciones si la actividad ya se está ejecutando  override fun onNewIntent(intent: Intent?) {  super.onNewIntent(intent)
 setIntent(intent) // Actualizar la intención de la actividad
 // Procesar aquí los nuevos datos de intención, de forma similar a onCreate  intent?.data?.let { uri ->
 val productId = uri.último segmento de ruta
 findViewById<TextView>(R.id.textView).text = "Nuevo ID de producto: $productId"  }  } } 

4. Cómo funcionan las redirecciones con los enlaces de aplicaciones Android

Los enlaces de aplicaciones Android están diseñados para funcionar a la perfección con redirecciones HTTP/HTTPS. Cuando un usuario hace clic en una URL que redirige, el sistema Android sigue la cadena de redirecciones. El punto crucial es que la URL final después de todas las redirecciones debe coincidir con la configuración intent-filter en tu AndroidManifest.xml y estar cubierta por tu archivo assetlinks.json.

  • Redireccionamientos del lado del servidor: Si su servidor web realiza un redireccionamiento 301 (permanente) o 302 (temporal), el sistema Android lo seguirá. Por ejemplo, si https://www.example.com/old-product redirige a https://www.example.com/products/item123, y su aplicación está configurada para gestionar https://www.example.com/products/, la aplicación se abrirá con item123.
  • Comportamiento alternativo: Si la aplicación no está instalada en el dispositivo del usuario o si falla la verificación del dominio, el enlace se abrirá en un navegador web.