entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Trabajar Offline app

Buenas, como ya eh platicado anteriormente me encuentro realizando una app híbrida la cual se conecta a una base de datos y obtendré dichos datos con JSON (gracias a la ayuda de ustedes ya eh podido realizarlo), ahora el siguiente paso de mi aplicación es los datos recaudados guardarlos en una base de datos interna (imagino sera usando SQLite y si es necesario crear las tablas) para poder trabajar con dicha aplicación de modo "offline" y poder sincronizar dichos datos a la base de datos real; para poder actualizar información de mi app al "conectarse" ahora si que en esta parte me siento un poco perdido, ya que jamas eh trabajado con este tipo de base de datos; ¿con que seria bueno comenzar, que tipo de cosas debo considerar? y lo mas importante ¿Se puede hacer lo que en mis "divagues" quiero hacer?

0voto

Gust4v0x comentado

Lo que haría yo es, programar la aplicación para que cada vez que se ejecuta conectarse al servidor. En caso la aplicación detecte que no hay red disponible en el equipo, utilizar JSON para simular una BD orientada a documentos (como en MongoDB). Además, si se detecta que el equipo está conectado a internet, que se ejecute una función donde se construyen objetos con los archivos JSON para luego ser enviados al servidor, o de frente enviar los archivos JSON y que el servidor se encargue de construir las consultas y guardar los datos.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola Adan,

lo que estás planteando no es tanto trabajar off-line con la app híbrida, lo que podría hacerce simplemente en HTML5 usando el soporte que trae para páginas off line diveintohtml5.info/offline.html, sino que la app siempre muestre los datos off line y sincronice con los datos on-line cada tanto.

A priori no es tan complicado, ya que SQLite tiene el mismo soporte para tablas y campos que la mayoría de las DB, y los accesos se hacen mediante lenguaje SQL.

http://developer.android.com/reference/android/database/sqlite/package-summary.html
https://www.udemy.com/blog/tutorial-de-android-sqlite-para-principiantes/

Lo que tendrías que cambiar es la lógica de presentación de datos de la aplicación: siempre mostrar los datos de SQLite, y cada tanto, sincronizar los datos de MySQL con los datos locales... es dcir, los datos on line jamás se mostrarían directamente en la app, sino que se usarían para refresacar los datos locales. De esta forma, sole tenés que programar una forma de mostrar los datos.

En general es así: luego dependiendo de los datos a mostrar, de la frecuencia de las actualizaciones y de si los clientes móviles agregan o modifican datos, hay que plantear diversas estrategias de sincronización.

Saludos cordiales!

0voto

AdanCervera comentado

Hola, muchas gracias por tu respuesta Leonardo efectivamente... tuve que cambiar la logica del negocio (al menos en la forma de mostrar) aun lo ando haciendo; pero que ya habia realizado funciona para lo que quiero hacer Ahora lo que estoy haciendo es una replica de mis tablas de MySQL con un campo de "Actualizable" y las estoy contruyendo en como base de datos en SQLite a su vez de su contenido todo lo estoy obteniendo con un JSON ejemplo del JSON:

{ "Tablas" : [ { "Tabla" : "preguntas" , "Campos" :[{"id_pregunta" :["1","2","3"]} ,{"pregunta" :["¿En que estado socioeconomico te encuentras?","¿Consideras tu estado de Salud?","Tipo de seguro medico:"]} ]} , { "Tabla" : "prueba" , "Campos" :[{"campo1" :["2342323","24234","2342323","24234"]} ,{"campo2" :["234","3244","234","3244"]} ,{"campo3" :["324","23","324","23"]} ,{"campo5" :["234","423","234","423"]} ]} , { "Tabla" : "respuestas" , "Campos" :[{"id_respuesta" :["1","2","3","4","5","6","7","8","9","10"]} ,{"id_pregunta" :["1","1","1","2","2","2","3","3","3","3"]} ,{"respuesta" :["Bueno","Medio","Bajo","Bueno","Malo","Excelente","IMSS","ISSTE","Seguro Popular","Ninguno"]} ]} ] }

A partir de esta cadena realizare (Creacion de tablas con sus campos, ademas de poblarla) de modo que ahora si podre trabajar en modo offline (Platico los cambios que estoy realizando por si alguien se llega a topar con esta misma situacion)

0voto

Leonardo-Tadei comentado

Gracias por compartir los avances y la forma de implementarlo Alan!

Tal y cómo decís, hay que agregar un flag de "actualizable" a los datos en el servidor. para no transmitir cada vez los mismos datos al movil.

Esto se puede implementar con una bandera que contenga la fecha de creación/modificación de cada dato, de forma tal que los clientes puedan consultar por actualizaciones desde una fecha en adelante (y dicha fecha será la de su última actualización)

Si la respuesta te sirvió, recordá seleccionarla así el tema queda marcado como "solucionado" y sirve de guía para quienes tengan un problema parecido.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta