Hola,

Desde que empecé a codificar en PHP, mientras aprendía e iba realizando proyectos a php_logonivel profesional y personal, he ido tratando de reutilizar todo el código que podía, abstrayendo funcionalidades, para así cada vez tener que hacer menos trabajo en los nuevos proyectos. PHP es un lenguaje muy completo y ágil, con una comunidad de desarrolladores muy amplia. Pese a ser un lenguaje muy completo, al final acabas teniendo que codificar muchas cosas que son repetitivas, estas te hacen perder tiempo y carecen de interés una vez  has aprendido a hacerlas. También hay veces que buscas por internet y en foros la manera adecuada de hacer lo que necesitas, teniendo que probar en más de una ocasión muchas maneras de llevar a cabo lo que quieres sin un resultado, en ocasiones, optimo o válido. En estos casos, inviertes mucho tiempo hasta dar con la solución, siendo un proceso muy cansino y exasperante.

Continue reading

Hola.

Al final me he decidido a publicar en GitHUB la librería que desarrollé para el uso de Google C2DM (Google PUSH notification system aka Cloud to Device Messaging) y que iba a usar en mis aplicaciones. EL motivo es para compartir sin más dicha librería y así, aparte de animaros a usar dicho sistema, conseguir quizás, que la librería mejore en base a aportes colaborativos :).

La he hecho lo más sencilla posible para la v1.0. Esta versión es estable. A día de hoy sigue en desarrollo.

La librería la he dividido en dos, una para la parte servidora y otra para la parte cliente (aplicación Android). Se puede usar una parte u otra aunque esta pensada para usarlas en combinación ya que juntas, permiten implementar de manera fácil cosas como:

  • El envío de información de registro del dispositivo al servidor, dandolo de alta en nuestro sistema.
  • De-registrar una app. de nuestro sistema.
  • Habilitar/Deshabilitar el envío de pushes a dispositivos determinados.
  • Recepción de ACKs (para posibles usos estadísticos) de las Pushes abiertas por el cliente.

Las partes de la librería quedan por tanto tal que:

  • Una librería para la parte servidora llamada AndroidEasyPushServer
    • El código esta bien documentado generándose el JavaDoc correspondiente en el proyecto. Aún así, se puede consultar en la página http://javocsoft.github.com/AndroidEasyPushServer/ su uso. La iré completando con el paso del tiempo e incluso activar la wiki con howtos especificos si veo que puede ser útil.
    • Esta contiene:
      • La librearía propiamente dicha
      • Un server CRUD de ejemplo que hace uso de esta. 
  • Una librería para la parte cliente (dispositivo Android) llamada AndroidEasyPushClient.
    • El código esta ampliamente documentado generándose el JavaDoc correspondiente. La web del proyecto aún no la he creado, cuando la tenga en el GitHUB lo comunicaré.
    • Esta contiene:
      • La librería en sí.
      • Una aplicación Android sencilla que ilustra el uso de la librería permitiendo registrar con Google C2DM el dispositivo, recibir una push, etc.

Ambas partes de la librería, parte servidora y cliente, estan Mavenizadas (incluso el proyecto de servidor CRUD de prueba). Lo único no Mavenizado es el proyecto de prueba Android, aún así, como esta realizado en Eclipse, tan solo se ha de importar el proyecto al IDE.

Haciendo esta librería me dí cuenta de un par de peculiaridades que me costó descubrir en su momento y que os comento para que no os pase si tampoco lo sabíais:

  • Cuando se trata de acceder desde una app. móvil a localhost(tu pc), la ip a poner no es la 127.0.0.1 ya que esta es la del propio dispositivo sino 10.0.2.2 (esto ya esta establecido en la app. de prueba incluida en la librería cliente). 
  • Cuando se testea y se trata de acceder a tu localhost, tu pc, donde tienes corriendo un servicio en un servidor, el servidor, si utilizais Eclipse al menos, se ha de lanzar fuera de Eclipse. En caso de no hacerlo, el emulador, por ejemplo, no podrá acceder a la parte servidora (aunque indiqueis la dirección ip correcta 10.0.2.2).  

También me gustaría comentaros algunas cosas sobre el sistema de Google para el envío y recepción de notificaciones PUSH, aka C2DM:

Si deseais más información sobre dicho sistema podeis ir a http://code.google.com/intl/es-ES/android/c2dm/.

Bueno, a aquellos que se decidan por usar el sistema PUSH de Google, sea usando mi librería o no, ánimo!

Un saludo,

JavocSoft 2012.