Session
Resumen
Namespace Imova.Flux.Data. Clase Session : MonoBehaviour, tratada en el sistema como singleton. Nota: a diferencia de FirebaseInstance y FirebaseData, Session no está marcada abstract en el código; sin embargo, funcionalmente cumple el mismo rol de clase base pensada para extenderse: el proyecto usa sus implementaciones concretas (SessionMobile, SessionWeb) en lugar de instanciarla directamente, y su diseño (métodos virtual/reemplazables y separación Mobile/Web) sigue el mismo patrón que las otras dos clases del backend de datos.
Su responsabilidad es registrar en Firebase los datos analíticos de la sesión activa: cuándo comenzó y terminó, el progreso alcanzado y el detalle de los eventos ocurridos durante el recorrido del flujo.
Cuándo usarla
- Para iniciar el registro analítico de una sesión al comenzar una secuencia (
CreateSession). - Para actualizar el estado general de la sesión (por ejemplo, al pausar, reanudar o finalizar).
- Para registrar el avance de la sesión a medida que se completan pasos (
LogProgress), aunque en la práctica esto ya ocurre automáticamente gracias a la suscripción interna a los eventos deFluxManager.
Propiedades
| Propiedad | Tipo | Descripción |
|---|---|---|
SessionKey | string | Identificador único de la sesión actual en Firebase. |
TimestampInicio | string | Marca de tiempo de inicio de la sesión. |
TimestampFinal | string | Marca de tiempo de finalización de la sesión. |
Progress | float | Progreso acumulado de la sesión dentro de la secuencia activa. |
UIDUser | string | UID del usuario autenticado al que pertenece la sesión. |
Métodos
CreateSession(...)
Crea el registro inicial de la sesión en Firebase, asociándolo al usuario autenticado y a la secuencia que está por comenzar.
UpdateSessionState(...)
Actualiza el estado general de la sesión existente. Cuenta con dos sobrecargas, para distintos niveles de detalle de la actualización según el contexto disponible al momento de llamarla.
LogProgress(...)
Registra en Firebase el avance de la sesión (por ejemplo, al completarse un paso del "happy path").
LogDetailSession(...)
Postear detalles de la sesion. IMPORTANTE: Solucion provisoria...
Postea el detalle de eventos ocurridos durante la sesión (por ejemplo, cada acción disparada). El propio código lo marca explícitamente como una solución provisoria en su comentario XML, por lo que debe tratarse como un punto candidato a revisión/reemplazo antes de depender fuertemente de su formato de salida en integraciones externas.
Session se suscribe internamente a eventos de FluxManager (cambios de paso, avance de secuencia) y de Action (disparo de acciones) para invocar automáticamente LogProgress/LogDetailSession sin que el resto del código deba llamarlos manualmente en cada punto del flujo.
Implementaciones
SessionMobileSessionWeb