Saltar al contenido principal

LocalBackupManager

Resumen

Namespace Imova.Flux. Clase LocalBackupManager : MonoBehaviour, singleton.

IMPORTANTE: Solo guarda datos de UNA sesion.

Su responsabilidad es persistir el progreso de la sesión activa en PlayerPrefs cuando se detecta pérdida de conectividad a internet, y restaurarlo/reenviarlo a Firebase automáticamente al recuperar la conexión, evitando la pérdida de datos de evaluación. Como indica su propio comentario XML, solo respalda datos de una sesión a la vez: no está pensado como un histórico de múltiples sesiones sin sincronizar.

Cuándo usarla

LocalBackupManager no requiere llamadas manuales típicas: se auto-conecta a los eventos de otros sistemas para guardar y restaurar automáticamente.

  • Se suscribe a FirebaseInstance.OnFirebaseInitialized para saber cuándo el backend está disponible.
  • Se suscribe a InternetConectionManager.OnConnectionCheck para detectar pérdida y recuperación de conectividad.
  • Se suscribe a los eventos de secuencia de FluxManager para saber cuándo hay progreso que respaldar.

En la práctica, basta con tener el componente presente en la escena (como singleton) para que el respaldo y la restauración ocurran de forma transparente ante cortes de conectividad.

Métodos

string ToJSON()

Serializa el estado actual de la sesión (progreso, timestamps, etc.) a una cadena JSON, lista para persistir.

void FromJSON(string json)

Reconstruye el estado de la sesión a partir de una cadena JSON previamente generada por ToJSON().

void SaveToPlayerPrefs()

Persiste el JSON generado por ToJSON() en PlayerPrefs, sobrescribiendo cualquier respaldo anterior (recordando que solo se conserva una sesión a la vez).

bool CheckAndRestoreData()

Verifica si existe un respaldo previo en PlayerPrefs y, de existir, lo carga en memoria mediante FromJSON. Devuelve true si se encontró y restauró un respaldo.

void TryPostRestoredData()

Intenta reenviar a Firebase los datos restaurados desde el respaldo local, típicamente al recuperar la conectividad.

void SaveData()

Punto de entrada que combina la obtención del estado actual (ToJSON) y su persistencia (SaveToPlayerPrefs), usado internamente cada vez que se detecta que conviene respaldar el progreso.

Ejemplo de código

// Flujo típico, manejado internamente por LocalBackupManager:
// 1) InternetConectionManager detecta pérdida de conectividad.
// 2) LocalBackupManager.SaveData() respalda el progreso en PlayerPrefs.
// 3) Al reconectar, InternetConectionManager.OnConnectionCheck(true) dispara
// LocalBackupManager.CheckAndRestoreData() + TryPostRestoredData().

private void Start()
{
if (LocalBackupManager.Instance.CheckAndRestoreData())
{
LocalBackupManager.Instance.TryPostRestoredData();
}
}

Ver también