FirebaseInstance
Resumen
Namespace Imova.Flux.Data. Clase abstracta FirebaseInstance : MonoBehaviour, singleton. Es la capa más baja del backend de datos: administra la inicialización de la conexión con Firebase, la autenticación anónima del usuario y el refresco periódico del token de autenticación, sin conocer los detalles de qué datos se leen o escriben (eso es responsabilidad de FirebaseData).
Al ser abstracta, no se usa directamente en escena: el proyecto instancia una de sus dos implementaciones concretas según la plataforma de compilación.
Cuándo usarla
- Como base para inicializar la conexión a Firebase al arrancar la aplicación, antes de cualquier operación de
FirebaseDataoSession. - Para reaccionar a la disponibilidad de Firebase mediante
OnFirebaseInitialized(por ejemplo, para desbloquear la UI de login o disparar la restauración de datos locales). - Para detectar fallos de autenticación mediante
OnFailedGetTokenIDy degradar a un modo sin conexión.
Propiedades
| Propiedad | Tipo | Descripción |
|---|---|---|
Initialized | bool | Indica si la conexión con Firebase ya fue inicializada exitosamente. |
OfflineMode | bool | Indica si el sistema está operando en modo sin conexión (sin backend disponible). |
Métodos
virtual void InitializeFirebase(string databaseURL)
Inicializa la conexión con la instancia de Firebase indicada por databaseURL y realiza la autenticación anónima del usuario. Al finalizar (con éxito o falla), dispara OnFirebaseInitialized. Cada implementación concreta la sobrescribe para usar el SDK correspondiente a su plataforma.
Eventos
| Evento | Delegate | Se dispara cuando... |
|---|---|---|
OnFailedGetTokenID (estático) | delegate void OnFailedGetTokenIDDelegate() | Falla la obtención o el refresco del token de autenticación anónima. |
OnFirebaseInitialized (estático) | delegate void OnFirebaseInitializedDelegate(bool success) | Termina el proceso de InitializeFirebase, informando si la inicialización fue exitosa. |
Implementaciones
FirebaseInstanceMobile: usa el SDK oficial de Firebase, activo solo bajo#if UNITY_ANDROID || UNITY_IOS.FirebaseInstanceWeb: usa SimpleFirebaseUnity vía REST, activo solo bajo#if UNITY_WEBGL.
Ambas implementaciones gestionan internamente el refresco del token de autenticación anónima mediante una corrutina (CheckerExpiredToken), que se ejecuta en segundo plano mientras la aplicación está activa.
Ejemplo de código
private void Start()
{
FirebaseInstance.OnFirebaseInitialized += HandleFirebaseInitialized;
FirebaseInstance.Instance.InitializeFirebase("https://mi-proyecto.firebaseio.com");
}
private void HandleFirebaseInitialized(bool success)
{
if (success)
{
// FirebaseData/Session ya pueden operar
}
else
{
// degradar a modo offline
}
}