Couchbase Móvil

Visualización de un indicador de progreso de sincronización en una aplicación iOS

NSProgress es un objeto en Foundation que representa la finalización de algún trabajo. Ese trabajo puede ser la descarga de un archivo, la instalación de una aplicación o algo que esté haciendo tu propia aplicación.

En NSProgress existe para permitirte informar fácilmente del progreso en tu aplicación a través de varios componentes tanto para la UI como para el sistema. Con Couchbase Mobile, los datos se intercambian iniciando réplicas y con ellas vienen los eventos de cambio que pueden informarte del progreso.

En este tutorial, importará datos de la API de Google Places a Sync Gateway y los replicará en una aplicación iOS.

> https://developers.google.com/places/

Por el camino, aprenderás a:

  • Utilice la API REST de Sync Gateway Admin para importar datos de una fuente externa.
  • Configurar una replicación pull con el SDK de iOS.
  • Utilice las notificaciones de cambios de replicación para mostrar una barra de progreso en la interfaz de usuario.

Empecemos.

Primeros pasos

Para utilizar la API de Google Places en este tutorial, primero crearás un nuevo proyecto en la Consola para desarrolladores de Google y, a continuación, generarás una Server API Key.

Abre Google Developer Console y accede a tu cuenta:

https://console.developers.google.com

Cree un nuevo proyecto denominado Explorador de la ciudad:


Una vez que el nuevo proyecto aparezca en la lista, haga clic en él y navegue hasta API y autenticación > API en el cajón de navegación izquierdo. Habilite la opción Servicio web API de Google Places.

Una vez activada, vaya a Credenciales en el cajón de navegación izquierdo, cree una nueva Clave (Clave de servidor) y copie la clave API, ya que la necesitará a lo largo de este tutorial.

En la siguiente sección, utilizará un par de bibliotecas y la API REST de Admin para sincronizar los datos de Lugares con Sync Gateway.

Pasarela de sincronización

Descargue Sync Gateway y descomprima el archivo:

> http://www.couchbase.com/nosql-databases/downloads#Couchbase\_Mobile

Puede encontrar el binario de Sync Gateway en la carpeta papelera y ejemplos de archivos de configuración en la carpeta ejemplos carpeta. Copie la carpeta basic-walrus-bucket.json en la raíz del proyecto:

Inicie Sync Gateway:

Abra el panel de administración para supervisar los documentos guardados en Sync Gateway.

http://localhost:4985/_admin/

En la siguiente sección, escribirá una pequeña aplicación NodeJS con los módulos RxJS y Request para importar los datos de Places a Sync Gateway.

API de lugares → Pasarela de sincronización

Antes de empezar a programar el servidor de la aplicación, comprueba que tu API Key funciona correctamente, abre la siguiente url en tu navegador, deberías ver la respuesta JSON.

> https://maps.googleapis.com/maps/api/place/textsearch/json?query=restaurants+in+London&key=API_KEY

NOTA: No olvides añadir tu API Key en la URL.

Para crear el servidor de aplicaciones que importará los datos de la API de Places a Sync Gateway, utilizará RxJS y Solicitar. El código que maneja más de un evento o cálculo asíncrono se complica rápidamente. RxJS hace que estos cálculos ciudadanos de primera clase y proporciona un modelo que permite APIs legibles y componibles para hacer frente a estos cálculos asíncronos. El módulo Request es la librería de-facto para hacer las peticiones http en NodeJS más simples que nunca. Adelante, instala las dependencias:

Copia requestRx.js del Repo de GitHub en la carpeta del proyecto. Simplemente estamos envolviendo la api Request en construcciones RxJS (flatMap, filter, subscribe...). Por ejemplo, en lugar de utilizar solicitar.obtenerutilizarás requestRx.get.

Cree un nuevo archivo llamado sync.jsrequieren el requestRx y Rx módulos. Define un par de constantes:

NOTA: Utilizará la sintaxis de JavaScript ES 6 (más concretamente la interpolación de cadenas y las funciones de flecha), lo que hará que su programa sea más corto y legible.

A continuación, utilice la función requestRx para seguir la cadena de peticiones descrita en el diagrama.

Si se pregunta cómo utilizar las extensiones reactivas, le recomiendo encarecidamente que siga los siguientes pasos este tutorial. Le llevará un par de horas completarlo pero saldrá de él con una comprensión muy clara de las Extensiones Reactivas.

Esto puede ser mucho para asimilar, pero lo mejor es experimentar con los diferentes operadores (flatMap, zip, subscribe, fromArray):

  1. Obtener los Lugares que coinciden con la consulta restaurantes en Londres. Utilice la función de interpolación de cadenas ES 6 en la url.
  2. En _bulk_docs es muy práctico para importar grandes conjuntos de datos a una instancia de Sync Gateway. Encontrará más información al respecto en docs.
  3. Después de guardar el documento, guardas la foto como un archivo adjunto, primero debes obtener la imagen de la API de Lugares. Fíjate en el icono codificación se establece en null. Esto es requerido por el módulo Request para cualquier cuerpo de respuesta que no sea una cadena. Más información en la sección Solicitar documentos.
  4. Debe indicar a Sync Gateway en qué documento (especificando el identificador del documento) y revisión de ese documento (especificando el número de revisión) desea guardar este archivo adjunto.

Para ejecutar su aplicación NodeJS escrita con la sintaxis JavaScript ES 6, puede utilizar Babel. Instálelo y ejecútelo con la función sync.js file:

Ahora que tiene los documentos, incluidas las imágenes, almacenados en el bucket en memoria de Sync Gateway, empezará a codificar la aplicación de iOS para incluir una barra de progreso gestionada por la notificación de cambio de replicación.

Aplicación iOS

En Xcode, cree un nuevo Aplicación de vista única llamado CityExplorer:

Cierra el proyecto e instala el SDK de Couchbase Lite para iOS a través de Cocoapods:

Añada la dependencia al Podfile en la raíz del proyecto, luego ejecute instalar:

Abrir CityExplorer.workspace esta vez y crear una cabecera puente:

Vaya a la configuración de construcción para añadir la cabecera de puente:

Abrir ViewController.swift y añadir una propiedad tire de de tipo ¿CBLReplicación?. En el viewDidLoad añada lo siguiente:

Arriba están pasando un par de cosas:

  1. Obtienes la instancia compartida del gestor.
  2. Con la instancia del gestor, eliminas el contenido de la base de datos. Esto garantizará que la replicación se inicie desde cero cada vez que ejecutes la aplicación.
  3. Instancie una replicación pull y regístrese como oberserver en la notificación denominada kCBLReplicationChangeNotification.
  4. Se inicia la replicación.

Y añade el replicationProgress para registrar simplemente las propiedades changesCount y completedChangesCount:

En la siguiente sección, agregarás una vista de progreso en el Storyboard, luego la conectarás al View Controller.

Barra de progreso

En el Guión gráfico, añada una Vista de progreso en el centro de la Vista:

Conecta el manejador de la interfaz de usuario a la propiedad del controlador:

En el replicationProgress actualiza el método progreso propiedad en consecuencia:

Ejecute la aplicación y debería ver cómo se actualiza la barra de progreso a medida que se replican los documentos:

Puede ejecutar el sync.js un par de veces para obtener más documentos. La API de Places devuelve un máximo de 20 resultados en una respuesta.

Conclusión

En este tutorial, aprendió a configurar un proyecto para utilizar la API de Google Places y un programa NodeJS para importar datos como documentos y archivos adjuntos en Sync Gateway. También utilizó la NSNotificación api en iOS para registrarse en el kCBLReplicationChangeNotification y actualiza la vista de progreso en tu aplicación iOS.

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

Autor

Publicado por James Nocentini, Redactor técnico, Móvil, Couchbase

James Nocentini es el escritor técnico encargado de la documentación de Couchbase Mobile. Anteriormente, trabajó como Developer Advocate y antes de eso como desarrollador front-end para HouseTrip. También disfruta escribiendo tutoriales de Android para raywenderlich.com en su tiempo libre.

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.