Crecer
Enlaces profundos
Un enlace profundo abre una pantalla concreta dentro de tu app instalada, como un reto, una invitación de referido o una página de producto. Si la app no está instalada, el visitante va a la tienda, igual que con tu enlace inteligente. Los enlaces profundos están disponibles en Pro, Studio y De por vida. Universal Links y Android App Links también necesitan un dominio personalizado, que forma parte de Studio.
Cómo funciona un enlace profundo
Añade /open/ y la ruta dentro de la app a tu enlace inteligente. La cadena de consulta también se transmite:
https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
| Visitante | Qué ocurre |
|---|---|
| iPhone o iPad, con un esquema de URL de iOS configurado | Una página breve intenta abrir habitly://challenges/30-days?ref=newsletter. Si la app no está instalada, el visitante continúa al App Store. |
| Android o Huawei, con un nombre de paquete configurado | Una página breve abre un intent de Android para la misma ruta, limitado a tu paquete. Chrome abre la app si está instalada y, si no, sigue el destino alternativo a Google Play. |
| Teléfono o tableta, sin ajustes de enlace profundo para su plataforma | Se redirige directamente al destino alternativo. |
| Equipos de escritorio y bots | Se redirigen al enlace inteligente, conservando la cadena de consulta. |
El destino alternativo es el lugar al que tu enlace inteligente enviaría ese dispositivo, según tus reglas de redirección, con las etiquetas UTM reenviadas. Si esa plataforma no tiene enlace de tienda, el destino alternativo es la página de destino. Si los enlaces profundos no están configurados en absoluto, o el plan no los incluye, todos los visitantes se redirigen al enlace inteligente.
Las rutas pueden contener letras, números y los caracteres / _ - . ~ %. Los demás caracteres se eliminan, así que codifica con porcentaje cualquier otro carácter, como los espacios (%20).
Configurar
Abre la pestaña Enlaces profundos de la app y completa los campos de las plataformas que admites:
| Campo | Ejemplo | Se usa para |
|---|---|---|
| Esquema de URL de iOS | habitly:// | Abrir la app desde la página de redirección en iPhone y iPad |
| Team ID de Apple | A1B2C3D4E5 | Universal Links. El ID de 10 caracteres que aparece en Membership details de tu cuenta de Apple Developer. |
| Bundle ID de iOS | com.habitly.app | Universal Links |
| Nombre del paquete de Android | com.habitly.app | Abrir la app en dispositivos Android y Huawei |
| Esquema de Android | habitly | El esquema que gestiona tu intent filter |
| Huellas de certificado SHA-256 | 14:6D:E9:83:...:44:E5 | Android App Links. Añade una o varias, separadas por comas, espacios o saltos de línea. |
habitly. Si lo dejas vacío, se usa https y la primera parte de la ruta se convierte en el host (https://challenges/30-days). Eso solo funciona si tu intent filter lo espera así.Registra el esquema en tu app
iOS, en Info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>habitly</string>
</array>
</dict>
</array>
Android, en AndroidManifest.xml:
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="habitly" />
</intent-filter>
</activity>
En tu app, lee la URL entrante, lleva al usuario a la pantalla correspondiente y lee los parámetros de consulta que necesites. Envía las rutas desconocidas a la pantalla de inicio, porque la gente edita las URL.
Universal Links y Android App Links
Los enlaces con esquema muestran primero una breve página de redirección, y iOS puede pedir al visitante que confirme. Los enlaces verificados se saltan ese paso: cuando la app está instalada, el sistema la abre directamente. La verificación necesita un dominio que pertenezca solo a tu app, así que funciona en tu dominio personalizado. Una vez conectado get.habitly.app, mapps.one sirve los archivos de asociación por ti:
| Archivo | Se genera a partir de |
|---|---|
https://get.habitly.app/.well-known/apple-app-site-association(también en /apple-app-site-association) | Team ID y bundle ID de Apple |
https://get.habitly.app/.well-known/assetlinks.json | Nombre del paquete de Android y huellas SHA-256 |
El archivo de Apple cubre todas las rutas bajo /open/:
{
"applinks": {
"details": [
{
"appIDs": ["A1B2C3D4E5.com.habitly.app"],
"components": [
{ "/": "/open/*", "comment": "Deep links created with mapps.one" }
]
}
]
},
"webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}
El archivo de Android:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.habitly.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Cada archivo devuelve "404 Not Found" hasta que sus campos sean válidos: un Team ID de 10 caracteres y un bundle ID para Apple, y un nombre de paquete con al menos una huella en el formato AA:BB:... (32 pares) para Android. Usa la huella de la clave de Play App Signing que aparece en Play Console → App integrity, y añade también tu clave de subida si pruebas compilaciones firmadas localmente. Los archivos se guardan en caché durante una hora. Apple también los guarda en caché en sus propios servidores, así que reinstala la app para probar los cambios.
Configura tu app
iOS: añade la capacidad Associated Domains con applinks:get.habitly.app.
Android: añade un intent filter verificado para tu dominio:
<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="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>
Luego usa enlaces como https://get.habitly.app/open/challenges/30-days en tus campañas. Cuando la app no está instalada, el navegador carga la página y se ejecuta el mismo flujo de destino alternativo.
mapps.one. Los enlaces en mapps.one/habitly/open/ siguen funcionando a través de la página de redirección. Las URL de enlaces profundos que se muestran en el panel y en la API usan mapps.one, así que reemplaza el host por tu dominio cuando quieras enlaces verificados.Estadísticas
Se cuenta una apertura en Aperturas de enlace profundo cuando un teléfono o una tableta carga una URL /open/ y mapps.one intenta abrir la app. La redirección al destino alternativo en la tienda no se cuenta una segunda vez. Los enlaces verificados que abren la app directamente nunca llegan a mapps.one, así que no se cuentan. Usa las estadísticas de tu propia app para esos casos.