La plataforma PhoneGap facilita la transición de la web a aplicaciones nativas (mientras que también brinda acceso a características del dispositivo como la cámara, el micrófono y el acelerómetro), pero aún hay cosas que los desarrolladores deben hacer por sí mismos. Una de las áreas primarias de importancia para una aplicación móvil es el almacenamiento de datos.

iphone_parse

Almacenamiento de datos en aplicaciones móviles

Cuando construyes aplicaciones que permiten al usuario final el almacenar contenido, debes encontrar una solución para almacenar los datos en una forma persistente. Tienes algunas cuantas opciones:

  1. Puedes almacenar todos los datos localmente en el dispositivo. PhoneGap proporciona acceso a una base de datos del lado del cliente a través de su API de Base de Datos. Funciona bien, especialmente con desarrolladores que hay trabajado con bases de datos de SQL. Pero los datos están confinados en el dispositivo. Si el usuario instala la aplicación en otro dispositivo (como en una tableta), entonces el usuario no podrá acceder a los mismos datos.
  2. Puedes almacenar los datos en un servidor remoto. Es fácil configurar AJAX para conectarse a un servidor remoto para enviar o recibir datos. Pero esto requiere la configuración de un servidor, instalar algún tipo de intermediario (ColdFusion, PHP, Node, u otros) y configurar un API en el servidor para manejar la identificación de los usuarios, la creación de datos, consultas, y más. Si eliges esta opción, serás responsable del mantenimiento del servidor. Puedes salir a caminar, adoptar a un perro o regar tus plantas mientras estás en ello.
  3. Puedes descargar el mantenimiento del servidor, la creación del API, los requerimientos de almacenamiento, y delegar esencialmente todas esas tareas al almacenar datos con una solución de terceros. Todo esto está disponible si usas la plataforma de aplicaciones móviles Parse.

Parse permite que los usuarios almacenen datos en sus servidores. Los datos pueden ser de cualquier tipo. ¿Quieres construir una plataforma para un blog? Puedes almacenar las entradas del blog. ¿Quieres construir un foro? Puedes almacenar los posts de los foros. ¿Quieres diseñar una red de compras especializada en las necesidades de los Zombis? Parse lo hace fácil.

La compra de Parse está estructurada en tres planes. El plan más básico, es 100% gratuito y proporciona capacidades importantes como parte de este servicio gratuito. Como desarrollador te puedes registrar gratis. Si evalúas Parse y decides que no es para ti, Parse incluye la posibilidad de exportar tus datos. No estas forzado a usar Parse, puedes usar una estrategia diferente. Parse es un asunto casual que rápidamente crece en el amor de muchos desarrolladores.

Parse ofrece muchas formas de usar su servicio. Puedes usar un conjunto de APIs que están escritas como librerías nativas. Mientras que los desarrolladores de PhoneGap comúnmente evitan trabajar con el lenguaje nativo de cada plataforma, aquellos que desean crear sus aplicaciones usando tecnologías nativas pueden tomar ventaja de los SDKs completamente especializados para su plataforma de desarrollo. (Por el momento hay SDKs disponibles para Android, iOS y Windows).

Además puedes usar un API sencilla basada en REST. Mientras que puedes usar esta plataforma desde PhoneGap, comúnmente se usa para el desarrollo del lado del servidor. Uno de los beneficios de Parse es la posibilidad de omitir por completo el trabajo con un servidor, aunque aún puedes usar un servidor web tradicional. Con el API de REST, tu servidor puede comunicarse con Parse para buscar y trabajar con datos.

Y finalmente, puedes usar el API de JavaScript. Esto permite a los desarrolladores de JavaScript el hacer uso completo del API de Parse desde PhoneGap o aplicaciones web. En la siguiente sección, aprenderás como usar el API de JavaScript y veras como agregar Parse a tu aplicación.

Trabajando con Parse

Para comenzar, regístrate en el sitio web de Parse.

  1. Visita parse.com y crea una cuenta gratuita.

Después de haberte registrado, Parse mostrara el formulario de inicio para construir una nueva aplicación:

Registro de Aplicación

Ingresa el nombre de tu elección. Para los propósitos de este artículo, el nombre de la aplicación será ADCApp.

Después de haber completado el proceso de registro, aparecerá una página de bienvenida.

  1. Da clic al enlace Dashboard (en el menú superior de la página de bienvenida).

Este dashboard proporciona muchas características. Por ahora, nos enfocaremos en las características relacionadas a la búsqueda de datos y configuración.

  1. Revisa las opciones en la pestaña Information del lado izquierdo:

Pestaña Information

Esta pestaña contiene varias claves para la integración con el API de JavaScript. Para este ejemplo, solo necesitaras el ID de la Aplicación y la clave de JavaScript. Después, cuando se edite el código, se copiaran estos valores.

  1. Da clic al enlace de Descargas en la parte superior de la página.

La sección de JavaScript incluye muchos enlaces, incluyendo una versión minified del SDK.

  1. Descarga el SDK y colócalo en una nueva carpeta.
  2. Descarga los archivos de ejemplo proporcionados aquí para obtener el código de esta aplicación y colocar los archivos en esta nueva carpeta.

Antes de ir más allá, deberíamos decidir lo que queremos construir. Parse nos permite almacenar datos de cualquier tipo. Para mantener las cosas sencillas en nuestra aplicación de ejemplo, diseñaremos una aplicación de notas. La aplicación te permite escribir nuevas notas así como ver las notas previamente creadas.

Creando una aplicación de notas

Para hacer las cosas lo más sencillas como sea posible, la aplicación no usara ningún framework de interfaz de usuario en particular. Esta no es la forma más elegante de desarrollar la aplicación, pero su objetivo principal es ilustrar como trabajar con el API de Parse.

  1. Ejecuta el editor de HTML de tu elección, y crea un archivo HTML en la tura principal del sitio del proyecto.
  2. Copia el código de abajo, pégalo en el archivo HTML y guárdalo.

Nota: El código de arriba hace referencia a parse.min.js. La copia del archivo que debes de haber descargado desde Parse.com incluye su versión, por ejemplo: parse-1.1.12.min.js. Puedes renombrar el archivo o solo editar el código de ejemplo para que sea el mismo nombre que el de tu archivo.

Esta aplicación carga jQuery, el SDK de Parse, y un archivo llamado main.js. El HTML consiste en una etiqueta DIV vacía y un formulario. La etiqueta DIV vacía contiene el contenido para cargar desde Parse, el cual vendrá al usuario después de publicar algo texto de contenido. El formulario en la aplicación permitirá que los usuarios ingresen nuevo contenido. En este caso, el formulario contiene dos campos para ingresar el título de la nota y el cuerpo de texto de la nota. Recuerda, Parse permite guardar cualquier cosa. Si tu concepto de notas incluye un campo relacionado al nivel de felicidad de la nota -solo agrégalo.

  1. Toma un momento para revisar main.js, el cual contiene mucha de la lógica de la aplicación.

  1. Edita el código, reemplazando las variables PARSE_APP y PARSE_JS con el ID de la aplicación y la clave de JavaScript desde el dashboard de Parse.

Puedes usar la función de jQuery document.ready() para ejecutar código cuando se haya terminado de cargar la página. Antes de que podamos usar Parse, primero debemos inicializarla. Es un simple llamado que hace uso de las variables creadas con anterioridad.

La siguiente línea es importante:

Cuando decides el tipo de dato que quieres crear, debes nombrarlo. En el código proporcionado, se llama NoteObject. Una vez se llama al objeto Parse, puedes pedirle al SDK de Parse que cree un tipo de objeto para extender la clase Object. El resultado es NoteObject que actúa como una clase nueva.

Así como leas el código, veras la lógica sencilla vinculada al formulario. Cuando se presione el botón, el código capturara el texto contenido en los campos del formulario.

Nota: Para probar los eventos táctiles en un navegador de escritorio, se puede cambiar temporalmente el código a clic, o usar las Herramientas de Desarrollo de Chrome para habilitar la simulación táctil. Para usar estas herramientas, actualiza las opciones al dar clic al icono de configuración en la esquina inferior derecha de la caja de dialogo de las herramientas de desarrollo, y entonces selecciona la pestaña Overrides. Desplaza hacia abajo la página y habilita la opción Emulate Touch Events.

A continuación, se hará una nueva instancia de NoteObject y se ejecutara el método save en esta. El primer argumento del método save son los datos. En este ejemplo, hay una clave llamada title y una clave llamada body. Estas dos claves representan los campos de entrada del NoteObject. Sin embargo, puedes usar los nombres que prefieras, debido a que Parse es flexible. Cuando sea necesario, incluso puedes cambiar los nombres de las claves en otro momento (aunque las mejores prácticas sugieren mantener consistentes los nombres).

El siguiente argumento es un objeto genérico de JavaScript que contiene las claves success y error. Ambas son funciones que representan la lógica que es llamada basada en el resultado de la operación save. En caso de error, se mostrara una alerta. Cuando el contenido de la nota se ha guardado correctamente, el código mostrara un mensaje de éxito directamente en la consola de JavaScript. Después podrás mejorar estos comportamientos.

Probando la aplicación

Después de haber editado la aplicación de ejemplo, es hora de probarla.

  • Abre el archivo HTML en tu navegador. Ingresa algún texto a los campos y da clic a Save.

Si la consola de JavaScript está abierta en tu navegador, podrás ver el resultado.

  • Para confirmar que el contenido se guardó correctamente en el framework Parse, visita el dashboard de Parse, da clic a la pestaña Data Browser, y veras el texto guardado.

Dashboard

Nota que la lista incluye propiedades adicionales que fueron almacenados con los datos. Parse captura información útil relacionada con los campos, como createdAt y updatedAt. Además nota que ha sido asignado un objectId a los datos almacenados.

Tu aplicación HTML solo crea contenido y lo almacena, gratis y sin un servidor (bueno, sin requerir la configuración de un servidor).

Visualizando los datos almacenados en Parse

A continuación, veras como listar objetos. Revisa la siguiente versión actualizada de main.js que lista el contenido almacenado cuando se carga la aplicación.

En esta sección, nos enfocaremos en actualizar el archivo de la aplicación.

  • Revisa la función getNotes que inicia creando una instancia del objeto Parse.Query.

El código anterior ilustra cómo puedes consultar datos desde Parse. La clase NoteObject es enviada, así que la consulta funciona solo con esa clase en particular. Cuando se ejecuta el método find, los resultados están en un arreglo. (En el ejemplo de arriba, esta es la propiedad createdAt). Aquí hay un ejemplo de cómo se muestran los datos en Chrome:

Datos en Chrome

El manejador para agregar notas también esta actualizado para limpiar al formulario y llamar de nuevo a la función getNotes. Ese no es el enfoque más elegante, pero funciona. Parse tiene un API de consulta increíblemente poderoso que permite muchas formas de filtrar las opciones. Si quieres hacer que esta aplicación funcione mejor, puedes modificar el código para obtener resultados de objetos creados después del timestamp, basado en el momento en que fue enviado el formulario.

Recomendaciones para extender la aplicación

Este articulo solo rosa la superficie de lo que se puede hacer utilizando Parse. Para obtener más información lee la Guía de JavaScript. Algunas características interesantes son:

  • Manejo de usuarios: Esto incluye la lógica de almacenamiento de usuarios que de otra forma es difícil de configurar. Por ejemplo, puedes asegurarte de que las direcciones de correo no se dupliquen, manejar el reinicio de contraseñas, y cachar las credenciales de identificación para la funcionalidad de login automático.
  • Seguridad completa: En este proyecto de ejemplo, todos los objetos son retornados al dispositivo móvil. Pero en el mundo real de las aplicaciones, las notas estarían asociadas con sus creadores. Parse tiene un modelo de usuarios robusto, con soporte para asociar los objetos a los usuarios. Además puedes crear grupos y conjuntos de permisos para los objetos.
  • Integración con Twitter y Facebook: Nunca he escuchado de otro sitio, pero si en tu caso lo has hecho, Parse te ayuda a la integración con estos.
  • Geolocalización: Mientras que Parse no agrega soporte directo para geolocalización, incluye una forma especial de manejar objetos que tienen datos de GPS. Así que si tu aplicación accede a la ubicación del usuario, puedes simplemente almacenar esos datos con un objeto. Puedes usar el API de consulta para ver los datos cercanos a la ubicación.

A dónde ir desde aquí

En este artículo, aprendiste como usar Parse para almacenar datos de aplicaciones móviles. Puedes estar pensando en cómo encaja PhoneGap en este flujo de trabajo. PhoneGap ofrece la oportunidad de aprovechar librerías de JavaScript y APIs para llevarlas a los dispositivos móviles. Toda la información proporcionada acerca de Parse trabaja bien con PhoneGap. Puedes usar el código de este artículo, cargarlo a PhoneGap Build, y crear una aplicación móvil en un tiempo de casi un minuto.

La versión original de este artículo está publicada en Adobe Devnet bajo licencia Creative Commons, fue traducido y adaptado en nuestro blog por Jesús Macedo.