Práctica de Aplicaciones Móviles: Implementación de un cliente de delicious.

Introducción | Delicious | Requisitos | Planificación | Evaluación | Entorno | Referencias

Introducción

Durante las sesiones de prácticas implementaremos un cliente sencillo de delicious en distintos lenguajes de programación. Con esto pretendemos alcanzar los siguientes objetivos:

  1. Aprender a realizar buenos diseños e implementaciones de aplicaciones móviles
  2. Utilizar con soltura los entornos de desarrollo y el lenguaje específico de dos plataformas móviles populares.
  3. En particular, dominar las APIs de interfaz con el usuario, de comunicaciones IP y de almacenamiento local de datos.
  4. Comparar el coste de desarrollo en varias plataformas con características similares.

Delicious

delicious.com (antes del.icio.us) es el servicio de enlaces a favoritos más popular de Internet y fue comprado por Yahoo! en diciembre de 2005.

La principal idea de este tipo de servicio web es que una persona pueda gestionar y acceder a su lista de marcadores/favoritos en cualquier navegador e incluso en cualquier ordenador.

La idea secundaria, que es común a la mayoría de servicios similares, es permitir que los usuarios (en algunos casos sólo quien añade el marcador, en otros cualquier miembro registrado en la comunidad) etiqueten los elementos de la lista. Este tipo de etiquetado o clasificación humana en comunidad se llama folksonomía y añade un rico valor semántico: permite, por un lado, a los usuarios buscar marcadores que pueden no haber sido introducidos por ellos pero están relacionados con un tema de su interés; por otro lado, a quien presta el servicio, proporcionar un medio de publicidad contextualizada (como el AdSense de Google).

ejemplo de anuncios relacionados en Delicious

En Delicious las entradas (llamadas posts) se identifican por su URL. Por lo tanto, al añadir una entrada con una URL que ya estaba guardada, o bien se sobreescribe con los nuevos datos (comportamiento por defecto), o bien se deja como estaba. Una etiqueta(en Delicious, tag) es una única palabra, nunca conjuntos de ellas.

La API de Delicious se basa en peticiones HTTP. Aunque pueda haber alumnos que tengan una cuenta de Delicious anterior a su compra por parte de Yahoo!, si quieren tener soporte en las prácticas deberán usar una cuenta de Yahoo! De cara a las llamadas a la API, utilizar las nuevas cuentas con usuario de Yahoo! implica:

Las llamadas de la API más relevantes para esta práctica son las siguientes:

Los parámetros deben ir correctamente codificados para su utilización en una URL.

Consideraciones importantes:

Requisitos

Nuestra aplicación, que se va a llamar DeliciAM, debe ser capaz de:

Se utilizarán tres lenguajes para la realización de esta práctica: JavaSE, que servirá para familiarizarnos con los distintos módulos de la aplicación en un lenguaje conocido, Android y PyS60.

Para afrontar el módulo en PyS60 son necesarios conocimientos básicos del lenguaje Python. En la sección de referencias y buscando en Internet se pueden encontrar manuales útiles.

OAuth

Es un protocolo que permite obtener la autorización de un usuario para el tratamiento de sus datos en otra plataforma. Yahoo! lo utiliza para mantener una base de usuarios única, con acceso a diferentes servicios. Google utiliza una versión algo más simplificada.

En la web de Yahoo! Developer Network podemos encontrar información sobre el proceso de autenticación que implementan los servicios de Yahoo!, como es el caso de Delicious:

  1. En primer lugar, es necesario conseguir una Consumer Key y un Shared Secret. Estas claves son proporcionadas al creador de una aplicación cuando ésta se registra en la Yahoo! Developer Network. Para esto hay que:
  2. Con las claves que nos han proporcionado en el registro, en la aplicación se inicia un proceso de intercambio de claves.
  3. En cierto punto del proceso, será necesario abrir una ventana de navegador en una URL que se nos proporcionará, de modo que el usuario pueda indicar su nombre y clave de Yahoo! y así dar permiso a la aplicación para acceder a sus datos de Delicious.
  4. Al fin de este proceso, tendremos un Access Token, un Access Token Secret, un tiempo de expiración del Access Token, una Session Credential y un tiempo de expiración de ésta. Mientras que se disponga de un Access Token en vigencia, no será necesario volver a pedir al usuario que dé su autorización. Se pueden guardar estos datos de forma consistente para cada usuario, de modo que al iniciar sesión en la aplicación se acceda a su perfil de Delicious sin necesidad de volver a pedirle autorización si ya lo hizo antes. Lo ideal sería guardar estos datos cifrados.
  5. En cada llamada a la API de Delicious deberá incluirse una cabecera HTTP Authorization, en la que se incluirá toda la información relativa a OAuth.

El paso 1 sólo será necesario una vez, cuando cada equipo de prácticas se registre en la Yahoo! Developer Network, ya que estas claves las pondrán reutilizar en los diferentes prototipos que realicen.

El proceso de intercambio de datos (pasos 2 y 3), así como la creación de las cabeceras Authorization (paso 5), suelen ser engorrosos de implementar, por lo que el código necesario será proporcionado en cada módulo en el lenguaje correspondiente.

El paso 4 de guardado de datos será realizado por el equipo de prácticas para cada módulo.

Planificación

Formación de grupos de prácticas y registro en la YDN

Las prácticas se realizarán obligatoriamente en parejas. Cada grupo de práticas debe enviar un correo a emglozan@it.uc3m.es indicando nombre, apellidos y NIA de los componentes antes del lunes 8 de Febrero. Ese día se publicará una lista en la página de la asignatura donde se indicarán los grupos y el número asignado a cada uno. Aquellos alumnos que no hayan formado grupos se asignarán aleatoriamente.

Una vez que se disponga de un número de grupo, éste debe conseguir una cuenta de Yahoo! si no disponía de una, y registrar su proyecto en la Yahoo! Developer Network siguiendo las indicaciones que se dan en el paso 1 del apartado referente a OAuth antes del 10 de Febrero.

JavaSE

Android

PyS60

Evaluación

La parte de prácticas significa un 60% de la nota global de la asignatura.

Se valorará cada módulo por separado con el siguiente peso:

Para poder calcular la nota global de prácticas no es necesario haber entregado y aprobado todas ellas. Las no presentadas se incluirán en el cómputo con nota igual a cero.

Forma de evaluación

Cada módulo debe entregarse a través de su enunciado específico en la plataforma Aula Global 2 en la fecha indicada. El último día correspondiente a cada módulo se dedicará a que cada grupo haga una breve presentación (5 minutos) en clase de su cliente DeliciAM, resaltando las decisiones de diseño y los puntos fuertes de su implementación. Esta presentación es imprescindible para que la práctica se pueda calificar.

Puntos extra

Se podrán tener en cuenta mejoras añadidas por la pareja de prácticas, siempre que se hayan cubierto satisfactoriamente los requisitos, hasta el 10% del peso de cada parte (sin superar la nota máxima). Por ejemplo, se valorará positivamente añadir seguridad a los datos almacenados de forma persistente.

Entorno

El entorno de desarrollo para las prácticas se proveerá en la forma de una máquina virtual que correrá en los laboratorios 4.1.B.01-02 y 4.S.D03-04.

También se podrá distribuir una copia en DVD entre los alumnos a través del delegado del grupo.

Se puede abrir con VMWare Player (instalador incluido en el DVD para los alumnos) u otro reproductor compatible. Sus características son las siguientes:

Las versiones de la mayoría del software instalado no son las últimas sino las necesarias para que el entorno funcione correctamente. Es muy importante no actualizarlo.

Referencias

Delicious

Java SE:

Android:

PyS60: