Skip to main content

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:
EntornoEsquema
Productionvivla://
Betavivlabeta://
Developmentvivladev://
Webhttps://vivla.app, https://*.vivla.app
La app configura Associated Domains para manejar Universal Links:
  • applinks:vivla.app
  • applinks:*.vivla.app
Esto permite que enlaces web abran directamente la app cuando esta instalada.

Servicio de linking

El archivo src/shared/services/linkingService.ts es el punto central para el manejo de URLs entrantes, tanto desde deep links como desde notificaciones push.

Rutas soportadas

RutaPantallaDescripcion
/booking/[id]Detalle de reservaNavega al detalle de una reserva especifica
/booking/reviewResena de estadiabookingId requerido. Usa SurveyScreen
/property/[id]Detalle de propiedadNavega al detalle de una propiedad
/property/home-reviewHome reviewpropertyId requerido. Usa SurveyScreen
/property/arrival-reviewArrival reviewpropertyId y bookingId requeridos
/property/rating-reportRating reportpropertyId requerido
/surveyEncuesta generica (modal)slug y scopeId requeridos
/survey/[slug]Encuesta por slug (modal)propertyId o bookingId requerido
/chat/[channelType]/[channelId]ConversacionAbre una conversacion de chat especifica
/invite/[token]Aceptar invitacionProcesa una invitacion mediante token
/invite/owner/[bookingId]Invitacion del propietarioInvitacion 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:
vivla://survey?slug=onboarding-review&propertyId=X
vivla://survey/financial-review?propertyId=X
vivla://survey?slug=arrival-review&bookingId=X&scopeType=booking
El servicio infiere automaticamente:
  • scopeId de queryParams.scopeId ?? queryParams.propertyId ?? queryParams.bookingId
  • scopeType de queryParams.scopeType ?? (queryParams.bookingId ? 'booking' : 'property')
  • entryPoint default: 'deep_link'

Parametro entryPoint

Las rutas de encuesta aceptan un parametro opcional entryPoint que indica como se accedio a la encuesta. Se usa para analytics:
ValorDescripcion
homeDesde la card en la home screen
deep_linkVia deep link externo (default)
auto_showModal automatico post-estadia
devBoton de testing en modo desarrollo

PendingDeepLinkStore

El store src/shared/stores/pendingDeepLinkStore.ts se encarga de preservar deep links cuando el usuario no esta autenticado.

Metodos

MetodoDescripcion
setPendingRoute()Almacena la ruta pendiente para procesarla despues del login
consumePendingRoute()Recupera y limpia la ruta pendiente
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.
Las notificaciones push pueden incluir un campo deep_link en su payload. Cuando el usuario interactua con la notificacion:
  1. El linkingService recibe la notificacion
  2. Extrae el campo deep_link del payload
  3. Procesa la URL y navega a la ruta correspondiente
  4. Si el usuario no esta autenticado, el deep link se almacena en PendingDeepLinkStore
Asegurate de que las notificaciones push incluyan el campo deep_link con una ruta valida. Rutas invalidas seran ignoradas silenciosamente por el servicio de linking.

Plugin withNavigationSchemes

El plugin personalizado withNavigationSchemes 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 en app.config.ts:
// Prefijos aceptados para deep linking
deepLinking: {
  prefixes: ['vivla://', 'vivlabeta://', 'vivladev://', 'https://vivla.app', 'https://*.vivla.app'];
}

// Type-safety en rutas
experiments: {
  typedRoutes: true;
}
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.