Nuevo Backend de Plataforma
El sistema soporta hoy dos backends de datos: uno Mobile, construido sobre el SDK oficial de Firebase, y uno Web, construido sobre SimpleFirebaseUnity (una capa REST). Ambos siguen el mismo patrón de tres piezas —FirebaseInstance, FirebaseData y Session— y el FluxManager permanece agnóstico a cuál de los dos está en uso: nunca depende directamente del SDK ni del transporte concreto, sino de las clases abstractas.
Esto significa que agregar soporte para otro backend o SDK de datos (por ejemplo, otro proveedor distinto de Firebase) no requiere modificar FluxManager: basta con seguir el mismo patrón Mobile/Web.
El patrón a seguir
Para soportar un nuevo backend, subclasifica:
FirebaseInstance: encapsula la conexión/autenticación con el backend concreto y las operaciones de lectura/escritura remotas, tal como lo hacen las implementaciones Mobile y Web hoy.FirebaseData: encapsula el parseo de los datos remotos (secuencias, pasos, sesiones) hacia los modelos internos del sistema.Session: encapsula el estado de sesión asociado al backend.
Siguiendo este mismo patrón, tu nuevo backend queda desacoplado del resto del sistema exactamente igual que Mobile y Web lo están entre sí.
Parsear campos custom sin reescribir el parser
FirebaseData expone una serie de hooks virtuales pensados específicamente para que un backend nuevo (o una variante de uno existente) pueda parsear campos adicionales propios sin tener que reescribir el parser completo:
GenerateClassSequenceGenerateClassStepGetExtraParamsSequenceGetExtraParamsStep
Sobrescribe únicamente el hook que corresponda a tu necesidad puntual (por ejemplo, agregar un parámetro extra a nivel de paso) y deja que el resto del parseo lo resuelva la implementación base.
Backends específicos de plataforma
Si el nuevo backend solo tiene sentido en una plataforma concreta (por ejemplo un SDK nativo disponible únicamente en cierto target de build), envuelve el código específico con directivas de compilación condicional, por ejemplo:
#if MI_PLATAFORMA
// Implementación específica de MI_PLATAFORMA
#endif
Esto evita que código exclusivo de un SDK/plataforma se compile o falle en targets donde no aplica.