Taller Android Party: Automatic API REST + Notificaciones PUSH

Post on 24-Apr-2015

531 views 0 download

description

Taller en el Android Party 2014 sobre Automatic API REST y Notificaciones PUSH

Transcript of Taller Android Party: Automatic API REST + Notificaciones PUSH

Automatic API REST+

Notificaciones PUSHAlejandro Esquiva Rodríguez

(@alex_esquiva)

Automatic API REST: Simplifica tus consultas by Geeky Theory is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

Objetivo del Taller

Herramientas que vamos a usar

• http://androidparty.geekytheory.com/material.rar• http://www.easyphp.org/save-easyphp-devservervc9-latest.php

Automatic API REST

¿Qué es una API REST?

API

• Una API representa una interfaz de comunicación entre componentes de software.

¿Qué es una API REST?

REST

• Transferencia de estado Representacional.• Está orientado a transferencia de recursos.• Arquitectura cliente/servidor sin estado: ni el cliente ni el servidor

necesitan recordar ningún estado de las comunicaciones entre mensajes.

• Hace uso del protocolo HTTP.• Cada recurso es únicamente accesible a través de su URI.• Los datos son generalmente ofrecidos en formato JSON o XML .• Control de errores.

¿Qué es una API REST?

Cada recurso es accesible a través de una única URI.

URIs

¿Qué es una API REST?

El cliente hace peticiones al servidor usando el protocolo HTTP. El servidor le responde a través del mismo protocolo.

Arquitectura Cliente - Servidor

¿Qué es una API REST?

• GETPedir información a un recurso.

• POSTCreate: Orden para insertar información.Update: Modificar información.

• PUTCreate: Orden para insertar información.Update: Modificar información.

• DELETEEliminar información del servidor.

Operadores API REST

¿Qué es una API REST?

JSON

Formatos de salida

XML

¿Qué es una API REST?

Ejemplos de APIs

Android y APIs

Necesidad

• Base de datos externa.

• Interacción de datos entre servidor y cliente.

• Aplicaciones multiplataforma

Automatic API REST

¿Qué es?• Una herramienta Open Source.

• Crea una completa API de tu base de datos MySQL o MariaDB.

• Proporciona una red automática de enlaces que proporcionan la información en JSON o XML.

• Intercambia información entre distintos lenguajes de programación.

• Panel de control para gestionar la privacidad de las tablas o campos de la base de datos.

http://AutomaticApiRest.info

Automatic API REST

Especificaciones

• Creación de enlaces únicos para cada recurso (URIs)

• Gestión de privacidad de las tablas.

• No altera la estructura de la base de datos.

• Obtener datos (GET) en formato JSON y XML.

• Insertar datos (POST) a través de enlaces únicos.

• Modificar Datos (POST) a través de enlaces únicos.

• Gestión de errores.

Automatic API REST

Modo de empleo• Aplicación de servidor

1. Instalar Automatic Api Rest en un servidor con soporte para PHP y MySQL.

2. Configurar el archivo config.php con los credenciales del servidor y apuntar a nuestra base de datos.

3. Entrar en el panel de control con los credenciales que hemos indicado en el archivo config.php

4. Indicar que tablas y campos son privados, deshabilitando la opción de obtener/añadir/modificar/eliminar datos.

Automatic API REST

Modo de empleo (GET)

• Aplicación de cliente (java, Python, c++,…)

1. Seleccionar los enlaces que queremos consultar desde el panel de control de Automatic API Rest.

2. Obtener el json/xml de la petición.

3. Parsear datos obtenidos.

Automatic API REST

Modo de empleo (POST)

• Aplicación de cliente (java, Python, c++,…)

1. Seleccionar el enlace donde queremos enviar la información.

2. Preparamos un json o xml (también se puede insertar desde parámetros POST) con los datos a insertar o modificar.

3. Enviar la petición

4. Obtenemos la respuesta con los resultados de la consulta

Cuando Usar Automatic API REST

• ¿Tienes una aplicación que necesite obtener datos de una base de datos externa?

• ¿Tienes una aplicación que sea multiplataforma?

• ¿Quieres ahorrar tiempo en el desarrollo de una API?

Ejemplo de uso: Base de datos

Descarga de la base de datos de prueba.http://dev.mysql.com/doc/index-other.html

• Base de datos: World• Número de tablas: 3• city: 4079 filas• country: 239 filas• countrylanguage: 991 filas

city

countrylanguage

country

Ejemplo de uso: Instalación

1. Descargamos Automatic API REST.

2. Extraer el zip y subir todo el directorio a la raíz principal de vuestro servidor.

3. Abrir el archivo config.php y rellenar todos los campos con los credenciales de la base de datos.

4. Visitar

http://tudominio.com/AutomaticaApiRest

Ejemplo de uso: Config.php

• SERVER: localhost

• USER: Usuario de la base de datos

• PASS: Contraseña del usuario de la base de datos

• DB: Base de datos a la que queremos apuntar

• USERADMIN: cuenta de administrador de AAR

• PASSADMIN: contraseña de administrador

Ejemplo de uso: Log In

http://tudominio.com/AutomaticaApiRest

Ejemplo de uso: Panel de Control

Ejemplo de uso: Navegación

Home: Enlace al inicio del panel de control.

Documentation: Documentación del proyecto. [En Construcción]

Black List: Gestión de las tablas privadas.

GitHub: Enlace al proyecto en GitHub

Close: Cierre de la sesión.

Ejemplo de uso: Gestión de tablas

Table Name: Nombre de la tabla de la base de datos.

API Link: Dirección única del recurso donde vamos a consultar todos los datos en formato JSON de la tabla.

Items: Número de Items que tiene la tabla.

Show Table: Mostrar una tabla con los datos de la tabla seleccionada.

Privacity: Esta casilla muestra si la tabla es pública o privada, en caso de que sea privada no se podrá ni consultar ni gestionar la tabla.

Ejemplo de uso: Gestión de campos

Column: Nombre del campo de la tabla seleccionada.

API Link: Enlace que genera un JSON con toda la información del campo encapsulado.

Show Table: Ver una tabla con los datos del campo seleccionado.

Select: Consulta personalizada (Ver siguiente punto).

Privacity: Privacidad del campo.

Ejemplo de uso: Consulta Personalizada

Observamos que podemos personalizar la consulta de datos, si por ejemplo sólo nos interesa el ID y el nombre de los últimos 5 registros de la tabla city ordenados por el campo Name generamos un enlace que exactamente nos ofrezca eso.

Ejemplo de uso: Black List

La Black List muestra todos las tablas y columnas que no permitimos ni obtener ni insertar datos. Desde esta misma tabla podemos eliminar los registros de la Black List.

Ejemplo de uso: Salida JSON

{"data":[{"0":"\u00b4s-Hertogenbosch","Name":"\u00b4s-Hertogenbosch","1":"Noord-Brabant","District":"Noord-Brabant","2":"129170","Population":"129170"},{"0":"\u0160umen","Name":"\u0160umen","1":"Varna","District":"Varna","2":"94686","Population":"94686"},{"0":"\u0160t\u0161olkovo","Name":"\u0160t\u0161olkovo","1":"Moskova","District":"Moskova","2":"104900","Population":"104900"},{"0":"\u0160ostka","Name":"\u0160ostka","1":"Sumy","District":"Sumy","2":"90000","Population":"90000"},{"0":"\u0160iauliai","Name":"\u0160iauliai","1":"\u0160iauliai","District":"\u0160iauliai","2":"146563","Population":"146563"}],"dbInfo":["Name","District","Population"]}

Ejemplo de uso: Aplicación Cliente - Java

Obtener información en JAVA

• Creación de una clase para la obtención y gestión de datos.

• Creación de métodos necesarios para parsear JSONs y obtener los datos a través de un enlace dado.

Ejemplo de uso: Aplicación Cliente - Java

getJSON

• Obtiene un JSON a través de un enlace dado

Ejemplo de uso: Aplicación Cliente - Java

getDataStringArray

• Hace uso de la librería json-simple-1.1.1.jar

• Devuelve un array multidimensional de Strings con la información del JSON

Ejemplo de uso: Aplicación Cliente - Java

setData

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 1: Obtención de un dato

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 2: Inserción de datos

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 3: Código de errores [Invalid Parameters]

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 4: Código de errores [Unauthorized]

Campo privada: CountryCode

Automatic API REST (alpha/beta)

Actualmente Automatic API REST es un projecto alpha, falta implementar mejoras y crear una documentación para cada tipo de lenguaje.

Líneas Futuras de AAR

• Documentación de cada plataforma

• Creación de librerías para cada plataforma que facilite el uso de AAR

• Implementación de seguridad con OAUTH 2.0

• Dar soporte a consultas complejas, WHERE, INNER, etc.

• Escoger permisos de cada tabla/campo, elegir permisos de cada campo.

• Gestión óptima de URIs

Proyecto Open Source

• Automatic API REST es un proyecto Open Source, todo el mundo es bienvenido a colaborar.

• Para colaborar, enviar directamente vuestros pull request o enviar un correo a alejandro@geekytheory.com

Notificaciones PUSH

Ecosistema

1. El dispositivo Android envía el ID de aplicación de GCM.

2. El servicio GCM devuelve un Id de registro único por aplicación y dispositivo.

3. Enviamos este id a nuestra aplicación de servidor.

4. Almacenamos el id en la base de datos externa.

5. Si queremos enviar una notificación, obtenemos el id de la base de datos y enviamos el mensaje a GCM.

6. GCM enviará el mensaje a nuestra aplicación.

Objetivo del Taller

Pasos a seguir

1. Registrarse en Google Cloud Messaging (GCM) desde Google API Console y obtener el Sender ID y la API key.

2. Crear una base de datos donde almacenaremos los ids de los usuarios.

3. Instala Automatic Api Rest (Opcional) y apuntar a la base de datos creada.

4. Crear una aplicación de servidor donde este a la escucha de ordenes para enviar notificaciones PUSH.

5. Crear una aplicación de cliente (Android) para obtener los Ids y almacenarlas en la base de datos y poder enviar notificaciones.

Obtener Sender ID y API Key

2. Obtener Sender ID:

Obtener Sender ID y API Key

3. Activar API

Obtener Sender ID y API Key

4. Activar Google Cloud Messaging for Android

Obtener Sender ID y API Key

5. Ir a Credenciales

Obtener Sender ID y API Key

6. Generar API Key

Creación de una base de datos externa

Instalamos Automatic API REST

Crear una aplicación de servidor para enviar Notificaciones

sendNotification.php

Aplicación Android

Aplicación Android

Librerias

https://dl-ssl.google.com/android/repository/gcm_r03.zip

GCM

https://json-simple.googlecode.com/files/json-simple-1.1.1.jar

json-simple

Aplicación Android

AndroidManifest.xml

Aplicación Android

Config.java

Aplicación Android

AutomaticApiRestClient.java

Aplicación Android

Controller.java

Aplicación Android

RegisterActivity.java

Aplicación Android

ListviewActivity.java

Aplicación Android

SendMessageActivity.java

Aplicación Android

GCMIntentService.java

Referencias

• Tutorial sobre Notificaciones PUSH• http://androidexample.com/Android_Push_Notifications_using_Google_Cloud_Messaging_GCM/index.

php?view=article_discription&aid=119&aaid=139

• Serie de tutoriales sobre JSON• http://geekytheory.com/category/geeky-theory-2/tutoriales-2/programacion-web/json/

• Tutorial sobre Automatic Api Rest• http://geekytheory.com/automatic-api-rest/

• Serie de tutoriales sobre JAVA – PHP –MYSQL• http://geekytheory.com/category/java-php-mysql/

• Tutoriales Sobre PHP & MySQL• http://geekytheory.com/category/geeky-theory-2/tutoriales-2/programacion-web/php-mysql/

Gracias

Alejandro Esquiva Rodriguez

/aesquiva

http://geekytheory.com

@alex_esquiva @GeekyTheory

http://AutomaticApiRest.info

/geekytheory