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.
-
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 comandokeytoolpara almacenes de claves locales. -
Alojar el archivo: Sube este archivo
assetlinks.jsona tu servidor web enhttps://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-productredirige ahttps://www.example.com/products/item123, y su aplicación está configurada para gestionarhttps://www.example.com/products/, la aplicación se abrirá conitem123. - 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.