2010-01-21 15 views
6

Tengo una base de datos en mi servidor que pesa aproximadamente 3mb. Me gustaría enviarlo con mi aplicación de iPhone.¿Cuál es la mejor manera de sincronizar de una manera desde una base de datos del servidor al iPhone?

Lo más importante es que me gustaría promover cambios en la base de datos (inserte, actualice, elimine) en el iphone. ¿Cuál es la mejor manera de hacerlo? Quiero decir - lo que es necesario en - el servidor - el cliente (= iphone) - entre; cómo transferir estos datos?

Soy bastante libre en el uso de tecnologías en el servidor; ahora mismo, tengo una base de datos sqlite en el servidor llena de los datos que me gustaría sincronizar con los iphones.

Respuesta

1

Pruebe usar ganchos de web.

El concepto de un WebHook es simple. Un WebHook es una devolución de llamada HTTP: un HTTP POST que ocurre cuando ocurre algo ; un simple evento-notificación a través de HTTP POST.

Una aplicación web que implementa WebHooks PUBLICARÁ un mensaje a una URL cuando ocurran ciertas cosas. Cuando una aplicación web permite a los usuarios registrarse sus propias direcciones URL, los usuarios pueden entonces extender , personalizar e integrar aplicaciones que con sus propias costumbres extensiones o incluso con otros aplicaciones en la web. Para el usuario , los WebHooks son una forma de recibir información valiosa cuando sucede, en lugar de sondear continuamente para esos datos y no recibir nada valioso la mayor parte del tiempo. WebHooks tienen un enorme potencial y son limitado solo por su imaginación! (No, no puede lavar los platos embargo..)

Usted puede encontrar más información sobre WebHooks aquí: http://www.webhooks.org/ y http://webhooks.pbworks.com/

+0

sonidos interesante. Entiendo cómo funcionan los enganches web (al menos, creo que sí). Pero en combinación con iPhone ... ¿cómo actualizo a los usuarios de mi aplicación? Eso solo sería posible con la notificación push, ¿verdad? Quiero decir, tengo que registrar sus teléfonos con mi aplicación, y cada vez que algo cambia, tengo que hacer una notificación automática, ¿o me falta algo? – swalkner

+0

Sí. La notificación de inserción podría funcionar. De cualquier forma, debe dar a sus usuarios registrados algún tipo de autenticación. Básicamente, puede crear un trabajo CRON que envíe las notificaciones a una lista de usuarios (usuarios que obviamente están registrados y autenticados) – feketegy

2

¿Con qué frecuencia necesita que se actualice la base de datos y cuán urgentes son los cambios?

Si las actualizaciones de la base de datos son poco frecuentes y no urgentes, la aplicación buscará una nueva versión de la base de datos al inicio y, si ha cambiado, descargará el archivo completo.

La aplicación siempre descargará un pequeño archivo de metadatos de una URL conocida al inicio. El archivo de metadatos contiene un identificador de versión para la última versión y una ubicación donde se puede descargar esa versión de la base de datos. Si el identificador de la versión ha cambiado desde la versión que la aplicación ya tiene, se descargará la nueva versión. Si el identificador de la versión no ha cambiado, o si no puede verificar, la aplicación puede seguir usando la versión que tiene.

Consejo profesional: si desea mostrar una barra de progreso para la descarga, incluya el tamaño de la base de datos en el archivo de metadatos. Las redes celulares a menudo tienen proxies transparentes que eliminan el encabezado Content-Length de las respuestas HTTP.

+0

por desgracia, las actualizaciones son frecuentes y muy urgente ... hm ... – swalkner

1

Wonder si ha considerado el uso de un marco de sincronización para gestionar la sincronización. Si eso le interesa, puede echarle un vistazo al proyecto de código abierto, el servicio Sync de OpenMobster.Puede realizar las siguientes operaciones de sincronización

  • dos vías
  • unidireccional cliente
  • unidireccional dispositivo
  • arranque

Además de eso, todas las modificaciones se registran automáticamente y se sincronizan con la nube Puede desconectar su aplicación cuando la conexión de red no funciona. Seguirá cualquier cambio y automáticamente en el fondo lo sincronizará con la nube cuando la conexión regrese. También proporciona sincronización como iCloud en varios dispositivos

Además, las modificaciones en la nube se sincronizan mediante notificaciones Push, por lo que los datos siempre están actualizados incluso si se almacenan localmente.

Aquí hay un enlace al proyecto de código abierto: http://openmobster.googlecode.com

Aquí hay un enlace a iPhone App de sincronización: http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

Cuestiones relacionadas