Documentation Index
Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt
Use this file to discover all available pages before exploring further.
Deep Linking
La app de Vivla soporta deep links para permitir la navegacion directa a pantallas especificas desde URLs externas, notificaciones push y otras aplicaciones.Esquemas de URL por entorno
Cada entorno tiene su propio esquema de URL para evitar conflictos entre versiones instaladas simultaneamente:| Entorno | Esquema |
|---|---|
| Production | vivla:// |
| Beta | vivlabeta:// |
| Development | vivladev:// |
| Web | https://vivla.app, https://*.vivla.app |
Universal Links / App Links
- iOS — Associated Domains
- Android — Intent Filters
La app configura Associated Domains para manejar Universal Links:
applinks:vivla.appapplinks:*.vivla.app
Servicio de linking
El archivosrc/shared/services/linkingService.ts es el punto central para el manejo de URLs entrantes, tanto desde deep links como desde notificaciones push.
Rutas soportadas
| Ruta | Pantalla | Descripcion |
|---|---|---|
/booking/[id] | Detalle de reserva | Navega al detalle de una reserva especifica |
/booking/review | Resena de estadia | bookingId requerido. Usa SurveyScreen |
/property/[id] | Detalle de propiedad | Navega al detalle de una propiedad |
/property/home-review | Home review | propertyId requerido. Usa SurveyScreen |
/property/arrival-review | Arrival review | propertyId y bookingId requeridos |
/property/rating-report | Rating report | propertyId requerido |
/survey | Encuesta generica (modal) | slug y scopeId requeridos |
/survey/[slug] | Encuesta por slug (modal) | propertyId o bookingId requerido |
/chat/[channelType]/[channelId] | Conversacion | Abre una conversacion de chat especifica |
/invite/[token] | Aceptar invitacion | Procesa una invitacion mediante token |
/invite/owner/[bookingId] | Invitacion del propietario | Invitacion asociada a una reserva |
Ruta generica de encuestas
La ruta/survey permite abrir cualquier encuesta como modal sin crear rutas especificas. Soporta dos formatos de deep link:
scopeIddequeryParams.scopeId ?? queryParams.propertyId ?? queryParams.bookingIdscopeTypedequeryParams.scopeType ?? (queryParams.bookingId ? 'booking' : 'property')entryPointdefault:'deep_link'
Parametro entryPoint
Las rutas de encuesta aceptan un parametro opcionalentryPoint que indica como se accedio a la encuesta. Se usa para analytics:
| Valor | Descripcion |
|---|---|
home | Desde la card en la home screen |
deep_link | Via deep link externo (default) |
auto_show | Modal automatico post-estadia |
dev | Boton de testing en modo desarrollo |
PendingDeepLinkStore
El storesrc/shared/stores/pendingDeepLinkStore.ts se encarga de preservar deep links cuando el usuario no esta autenticado.
Metodos
| Metodo | Descripcion |
|---|---|
setPendingRoute() | Almacena la ruta pendiente para procesarla despues del login |
consumePendingRoute() | Recupera y limpia la ruta pendiente |
Flujo de deep link con autenticacion
Este mecanismo asegura que los deep links no se pierdan cuando la app requiere autenticacion. El
usuario es redirigido a login y, una vez autenticado, se navega automaticamente a la ruta
original.
Push notification deep links
Las notificaciones push pueden incluir un campodeep_link en su payload. Cuando el usuario interactua con la notificacion:
- El
linkingServicerecibe la notificacion - Extrae el campo
deep_linkdel payload - Procesa la URL y navega a la ruta correspondiente
- Si el usuario no esta autenticado, el deep link se almacena en
PendingDeepLinkStore
Plugin withNavigationSchemes
El plugin personalizadowithNavigationSchemes agrega esquemas de navegacion externa en iOS mediante LSApplicationQueriesSchemes. Esto permite que la app pueda abrir otras aplicaciones de mapas:
Google Maps
Esquema
comgooglemaps://Waze
Esquema
waze://Apple Maps
Esquema nativo de iOS
Configuracion en app.config.ts
La configuracion de deep linking se define enapp.config.ts:
Con
typedRoutes: true habilitado, el compilador de TypeScript valida que las rutas de navegacion
sean correctas en tiempo de compilacion, evitando errores por rutas inexistentes.