Couchbase Móvil

Sincronización de imágenes entre Android e iOS con NativeScript, Angular y Couchbase

Hace unas semanas tuve escrito una guía que demostraba cómo guardar imágenes capturadas en Couchbase Lite como datos de cadena codificados en base64 en una aplicación móvil NativeScript con Angular. Aunque la guía anterior funcionaba tanto para Android como para iOS, los datos estaban localizados en el dispositivo. ¿Y si quisieras sincronizar las imágenes entre dispositivos o incluso almacenarlas en la nube?

Vamos a ver cómo utilizar Couchbase Mobile para sincronizar datos de imágenes entre dispositivos y plataformas en un NativeScript con la aplicación Angular.

A partir de ahora debes tener en cuenta que esta es la segunda parte de la serie. Esto significa que si aún no has seguido el tutorial anterior y no has conseguido una versión funcional del proyecto, deberías poner este tutorial en espera. Empieza con la guía, Guardar imágenes capturadas en una aplicación NativeScript Angular a CouchbaseA continuación, trabaja en la sincronización de las imágenes.

NativeScript Couchbase Photos

La imagen animada de arriba te dará una idea aproximada de lo que buscamos. Queremos poder sincronizar las imágenes guardadas entre Android e iOS usando Sync Gateway y opcionalmente Couchbase Server.

Requisitos

Los requisitos previos para esta guía son similares a los de la anterior. Necesitarás lo siguiente:

  • NativeScript CLI
  • Android SDK para Android o Xcode para iOS
  • Pasarela de sincronización Couchbase
  • Servidor Couchbase (opcional)

Notarás que Sync Gateway y opcionalmente Couchbase Server son los nuevos requerimientos de esta guía en la serie. Los necesitaremos para que la sincronización realmente ocurra. Si no estás familiarizado, Sync Gateway es el middleware de sincronización y Couchbase Server es el servidor de base de datos remoto.

Configuración de Sync Gateway para la replicación

Para utilizar Sync Gateway tendremos que definir una configuración en cuanto a cómo se produce la sincronización y cosas por el estilo.

Crear un sync-gateway-config.json en algún lugar de su ordenador que contenga la siguiente información:

En el archivo de configuración anterior estamos guardando todo en morsa:datos que es una solución en memoria en lugar de persistir en Couchbase Server. La base de datos remota se llama base de datos de imágenespero no tiene por qué coincidir con lo que tenemos en el código de nuestra aplicación móvil.

Para simplificar, todo el mundo podrá leer y escribir datos en el mismo canal que un invitado.

Para ejecutar Sync Gateway, ejecute lo siguiente:

Debería poder acceder a Sync Gateway desde su navegador web en http://localhost:4984/_admin/ y ver todo lo que se está sincronizando, lo que a menudo se denomina replicado.

Añadir la lógica para sincronizar datos de imagen

El código necesario para que la replicación funcione en nuestra aplicación NativeScript con Angular es mínimo.

Abra el archivo app/app.component.ts e incluya el siguiente código TypeScript:

El código anterior incluye todo lo de la primera parte de la serie, así como esta parte de la serie. Vamos a desglosar sólo lo que se ha añadido en lo que respecta a la replicación.

En el constructor definimos a dónde vamos a enviar los datos y de dónde vamos a extraerlos.

Esto debe hacerse continuamente mientras la aplicación esté abierta.

Asegúrate de utilizar el host o la dirección IP correctos para Sync Gateway. Si estás usando Genymotion como yo, localhost no funcionará. Tendrás que averiguar las direcciones IP correctas.

En el ngOnInit iniciamos el proceso de replicación y configuramos un oyente.

Cada vez que haya un cambio en la base de datos haremos un bucle a través de ellos y cargaremos los datos base64. Este ejemplo es simple por lo que no hay actualizaciones o eliminaciones de imágenes. Si este fuera el caso, nuestro listener sería un poco más complejo en lógica.

La razón por la que utilizamos un Angular NgZone es porque el oyente opera en un hilo diferente. Por zonificación, podemos tomar los datos y asegurarnos de que la interfaz de usuario se actualiza correctamente.

Eso es todo lo que tuvimos que hacer para que las imágenes se sincronizaran entre el dispositivo y el servidor. Fácil, ¿verdad?

Conclusión

Acabas de ver cómo sincronizar datos de imagen entre dispositivos y plataformas utilizando NativeScriptAngular y Couchbase. Este fue un seguimiento del tutorial anterior que escribí llamado, Guardar imágenes capturadas en una aplicación NativeScript Angular a Couchbasedonde pusimos en marcha la aplicación inicial.

En caso de que prefieras no almacenar tus imágenes en la base de datos, puedes considerar crear una API que utilice un almacenamiento de objetos como Minio o Amazon S3. He escrito un tutorial sobre crear una API que guarde en Minio que podría ayudar.

Para obtener más información sobre el uso de Couchbase con Android e iOS, consulte la página Portal para desarrolladores de Couchbase.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.