En este post se explica cómo utilizar Couchbase Lite como base de datos incrustada para compartir datos entre tu iOS App y iOS App Extension.  Extensiones de aplicaciones implementan una tarea o funcionalidad específica que puede ser expuesta a otras aplicaciones en el dispositivo o al sistema operativo. En este post, vamos a ver un ejemplo de cómo se puede utilizar una Today Extension con una base de datos incrustada de Couchbase Lite en modo autónomo.

NOTA: Estaremos discutiendo Couchbase Mobile v1.4 que es la versión de producción actual. Pero todo lo que discutimos aquí se aplica a la más reciente Vista previa para desarrolladores de la versión 2.0 de Couchbase Mobile

Fondo

Apple admite muchos tipos de Extensiones de aplicaciones cada una de las cuales habilita funcionalidades relevantes para un subsistema concreto del dispositivo. En este post, vamos a discutir cómo Couchbase Lite se puede utilizar con una extensión Today. Este tipo de extensión, también conocida como "Widget", aparece en la vista Today del Centro de Notificaciones y permite a los usuarios obtener actualizaciones rápidas. Puedes aprender más sobre cómo funcionan las Extensiones de App en la sección Documentos para desarrolladores de Apple.

Asumiré que estás familiarizado con el desarrollo de aplicaciones iOS en Swift y que tienes una comprensión básica de la integración de Couchbase Lite en tu aplicación iOS. Esta guía de introducción es un buen lugar para empezar. Si quieres leer más sobre Couchbase, consulta los recursos al final de este post.

Couchbase Lite

Couchbase Lite es una base de datos integrada que se ejecuta en dispositivos. Se puede utilizar en varios modos de despliegue. Se puede utilizar como una base de datos incrustada independiente o puede ser utilizado en conjunción con una puerta de enlace de sincronización remota que le permitiría sincronizar los datos a través de dispositivos. En este post, utilizaremos Couchbase Lite en modo de despliegue autónomo. En este post, no vamos a repasar los detalles de la integración con Couchbase Lite. El sitio Primeros pasos con Couchbase Lite es un buen lugar para empezar.

Aplicación de demostración

  • Descargue el proyecto de demostración de Xcode de la página Repo de Github . Utilizaremos esta aplicación como ejemplo en el resto del blog.

  • Siga las instrucciones del LÉAME para instalar y ejecutar la aplicación

Se trata de una sencilla aplicación de lista de tareas que permite a los usuarios añadir, editar y eliminar tareas. El usuario puede marcar las tareas como completadas. La aplicación incluye una extensión "Hoy" que muestra las 2 tareas principales en el centro de notificaciones sin necesidad de abrir la aplicación. El usuario puede marcar tareas como completadas directamente desde el centro de notificaciones.

Todas las tareas se almacenan en una base de datos local de Couchbase Lite. Esto implica que tanto la app contenedora como la extensión necesitarán acceso a la base de datos.

Arquitectura de aplicaciones

Las extensiones de aplicaciones no son aplicaciones independientes. Están incluidas en una aplicación, denominada "Aplicación de contenedores". Aunque las extensiones de aplicación se incluyen en la aplicación contenedora, se ejecutan independientemente de ésta en un proceso separado. Las extensiones de aplicación se inician mediante otras aplicaciones que necesitan la funcionalidad de la extensión. La aplicación que ejecuta la extensión se denomina "Aplicación anfitriona". La interfaz de usuario de la extensión se muestra en el contexto de la aplicación anfitriona.

Aunque la aplicación contenedora y la extensión correspondiente son procesos independientes que se ejecutan en su propio espacio aislado, pueden compartir datos a través de un archivo Contenedor compartido.

El contenedor compartido puede configurarse registrando un único grupo de aplicaciones y habilitándolo tanto para la aplicación contenedora como para la extensión. Aprenderá a configurar esto en la siguiente sección.

App Extension Architecture

Configuración de grupos de aplicaciones

Consulte el Documentos para desarrolladores de Apple para obtener más información sobre la configuración de grupos de aplicaciones en tu aplicación para iOS

Abra el CBLiteApp.xcworkspace del proyecto de aplicación de demostración que ha descargado.

  • Abra la pestaña "Capacidades" del objetivo CBLiteApp Container App . Debería ver el grupo de aplicaciones group.com.example.CBLiteSharedData habilitado.
Enabling App Group

Activación del grupo de aplicaciones

 

 

 

 

 

 

 

 

 

  • Abra la pestaña "Capacidades" del objetivo CBLiteTaskExtension. Debería ver el mismo grupo de aplicaciones, group.com.example.CBLiteSharedData habilitado.

Configuración del grupo de aplicaciones en la extensión

 

 

 

 

 

 

 

 

 

La activación de las capacidades del grupo de aplicaciones para un destino lo añade a los archivos de derechos para la aplicación contenedora y su extensión.

  • Además, tendrá que añadir la función Grupos de aplicaciones a su App Id registrado en el portal para desarrolladores de Apple.
Configuring App Group for App in Apple Developer Portal

Configuración del grupo de aplicaciones en el portal para desarrolladores de Apple

 

Guía de la aplicación

Cree y ejecute la aplicación seleccionando el objetivo de la aplicación "CBLiteApp". Ahora cambia a la vista Hoy del Centro de Notificaciones

  • Añada su nuevo Widget de Extensión a la Vista Hoy como se muestra a continuación

 

Add Today Widget

  • Cambie a la aplicación y añada un par de tareas pulsando el botón "+". Cambia al widget "Hoy" correspondiente. Verás que las tareas que has añadido se muestran en el widget.

Add Task

  • Marque una tarea como "Completada" pulsando sobre ella. Ahora vuelve a la aplicación Contenedor. Verás que el estado de finalización de las tareas se actualiza para corresponderse con las acciones realizadas desde el widget "Hoy".

Today Extension Update Task

 

  • Del mismo modo, edita o elimina una tarea en la aplicación Contenedor deslizando el dedo sobre la entrada de la tarea. Cambia al widget Hoy. Verás la lista de tareas actualizada.

Force Touch

  • Si su dispositivo es compatible con 3D Touch, puede hacer un toque de fuerza en el icono de la aplicación en la pantalla de inicio para revelar la extensión Top Tareas allí mismo desde el icono y se puede interactuar con él. ¡Genial!

Force Touch

  • Por último, finalice la aplicación Container. Cambie al widget Hoy y actualice el estado Completado de una tarea. Vuelva a iniciar la aplicación. Las tareas aparecerán con el estado actualizado.

Container App Termination

 

Guía de códigos

Las tareas se almacenan en una base de datos local integrada en Couchbase Lite. Esto implica que tanto la app contenedora como la extensión Today necesitan acceder a la base de datos. Como se discutió anteriormente, la forma de compartir datos entre la app contenedora y la extensión es a través del Contenedor Compartido. Esto implica que la base de datos de Couchbase Lite debe estar localizada en el Contenedor Compartido.

El código para activarlo es sencillo.

Abra el GestorBaseDatos.swift archivo.

El DatabaseManager es una clase singleton que se encarga de las funciones básicas de gestión de bases de datos.

  • Localice appGroupContainerURL función

Esta función construye la ruta a la carpeta del contenedor compartido.

  1. Devuelve la URL del contenedor de grupo compartido. Los contenedores de grupo se almacenan en ~/Library/Group Containers/
  2. Cree una carpeta llamada CBLite en el contenedor del grupo compartido.
  • Localice configureCBManagerForSharedData función

  1. Crea el objeto de opciones CBLManagerOptions con las protecciones de archivo apropiadas. Un valor de completeFileProtectionUnlessOpen implica que el acceso de lectura/escritura al archivo está restringido a menos que el archivo esté abierto
  2. Inicializa el CBLManager con la ruta al contenedor compartido. Cuando se cree la base de datos, se creará en el contenedor compartido.¡Ya está! La base de datos de Couchbase Lite está ahora en el contenedor compartido que tanto la aplicación como la extensión pueden leer y escribir.

¿Y ahora qué?

Explore el resto del código de ejemplo de la demostración para comprender cómo se añaden, editan y eliminan los documentos. En concreto, eche un vistazo a TaskPresenter.swift archivo. Aquí es donde se manejan todas las interacciones con la base de datos Couchbase Lite.

Si tiene alguna pregunta, no dude en ponerse en contacto conmigo en Twitter. Si desea sugerir mejoras, envíe un pull request a la sección GitHub repo. Puede obtener más información sobre la integración con Couchbase Lite en este enlace Primeros pasos con Couchbase Lite blog. En Foros de Couchbase son otro buen lugar para publicar sus preguntas.

Aunque este post trata sobre el uso de Couchbase Lite en modo autónomo, permanece atento a un próximo post que mejorará la capacidad para incluir la sincronización con la nube.

Autor

Publicado por Priya Rajagopal, Directora de Gestión de Productos

Priya Rajagopal es directora sénior de gestión de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el perímetro. Lleva más de 20 años dedicándose profesionalmente al desarrollo de software en varios puestos de liderazgo técnico y de producto, con más de 10 años centrados en tecnologías móviles. Como delegada de estándares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de estándares IPTV. Tiene 22 patentes en las áreas de redes y seguridad de plataformas.

Dejar una respuesta