Este es un problema importante al desarrollar una aplicación de mensajería. Debe diseñar su flujo de datos para asegurarse de que esto no suceda.
Usted menciona que está intentando “evitar una gran cantidad de datos en Firebase”. Parece que puede estar un poco confundido por la forma en que se almacenan los datos. Recuerde que necesita almacenar toda su base de datos en Firebase. Luego descarga los datos necesarios a teléfonos individuales. Esto evita que se almacenen datos innecesarios en su teléfono, pero también le brinda una copia de seguridad completa en su base de datos Firebase.
CoreData se utiliza para conservar información en su teléfono. Sin usarlo, toda su información se perdería cada vez que se carga la aplicación. Esto significa que siempre debe usar CoreData (o equivalente) para almacenar información.
Sin embargo, para mayor eficiencia, no querría tener la base de datos de teléfonos idéntica a la de Firebase, ya que eso significaría que cada teléfono almacenaría una gran cantidad de datos innecesarios. Esta es la razón por la cual Firebase necesita contener la base de datos completa y cada teléfono solo descarga su información apropiada.
Vale la pena comprender el flujo de datos que debe usar para una aplicación de mensajería.
Cuando un usuario realiza una acción (escribe y envía un mensaje) necesitamos conservar estos datos en el dispositivo del usuario. Luego lo convertimos a un formato JSON apropiado para cargarlo en la base de datos. Cuando Firebase recibe este mensaje, enviará notificaciones a cualquier dispositivo que esté observando actualmente la ruta de mensajes. Esto alertará a todos los demás usuarios en el chat que necesitan descargar este nuevo mensaje. Una vez que esto ocurra, el código en su aplicación descargará una instantánea de los nuevos datos y creará un nuevo objeto CoreData para ellos en el dispositivo. Las pantallas de chat se actualizarán con el nuevo objeto disponible.
Desea que esta funcionalidad sea coherente con todos sus dispositivos, esto significa que cuando envía un mensaje desea que se notifique a su propio dispositivo, descargue el mensaje y actualice el objeto CoreData con la información.
Lo importante de esto es que nunca puede tener información diferente en la base de datos de Firebase y en su teléfono. Cuando se crea un nuevo objeto, se lo envía a la base de datos antes de descargarlo en todos los dispositivos de forma idéntica.
Nota: El teléfono que carga el mensaje también debe incluirse en los teléfonos que se están sincronizando.
Para concluir , Firebase es una excelente opción para una aplicación de mensajería. Los problemas que menciona aquí serían consistentes con cualquier backend que elija tener. Los datos siempre se deben conservar con cuidado para evitar la corrupción.
Nota: Si está desarrollando una aplicación de mensajería, puede estar interesado en consultar el componente Firebase Chat Component de nuestras empresas en Github. Hemos lanzado componentes compatibles de iOS y Android en una licencia MIT. Esto significa que puede descargar y usar el código sin compromiso. Puede valer la pena para que pueda ver el flujo de datos entre Firebase y CoreData en acción. Ver cómo debería verse la estructura le ahorrará tiempo al desarrollar su propio proyecto. Si tiene alguna pregunta, puede ponerse en contacto y estaremos encantados de ayudarlo.