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.OnFirebaseInitializedpara saber cuándo el backend está disponible. - Se suscribe a
InternetConectionManager.OnConnectionCheckpara detectar pérdida y recuperación de conectividad. - Se suscribe a los eventos de secuencia de
FluxManagerpara 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();
}
}