Google Cloud Messaging (GCM) e um servico que permite que voce envie dados de seu servidor para um dispositivo Android ou agora para o navegador. A partir do Chrome 42, usuarios podem optar por receber notificacoes push diretamente a partir de sites e facilmente adicionar sites de alta qualidade regularmente visitados para sua tela inicial.
Sao notificacoes personalizadas que poupam os usuarios do esforco de verificar manualmente por atualizacoes ao longo do dia e permitem uma serie de novas experiencias de comunicacao em tempo real para receber atualizacoes sobre as ultimas noticias. Ha uma dependencia de ter um trabalhador de servico para implementar mensagens de envio para a web.
Abaixo esta um exemplo de como voce registrar um trabalhador de servico em seu aplicativo da web.
Note down your API Key for server apps (with IP locking) shown on below screenshot. This API key will be used when sending requests to the GCM server. In this activity, we have created a button and on button click will send the SENDER ID to the GCM Server. Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. After downloading Google Play Service, a new folder will be created inside your Android SDK folder and you need to import it. After sucessfull installation, go to the location where the Android SDK is installed on your computer.
For using the Android push notifications in your project, you need to add the Play Service library.
Each Android application runs in its own process and in one single thread which is called Main thread or UI thread. Any operation which is heavy or which will block our main thread, should be implemented in a separate thread. The device will be registered and the GCM server will have the registered ID of the device.
En los dos anteriores (I y II) articulos del curso hemos hablado sobre el servicio Google Cloud Messaging y hemos visto como implementar una aplicacion web que haga uso de dicho servicio para enviar mensajes a dispositivos Android. Para las tareas 1 y 4 utilizaremos una libreria especifica de GCM que nos proporciona Google para facilitarnos la vida como desarrolladores (es posible hacerlo sin el uso de librerias externas, aunque requiere mas trabajo).
Antes de nada vamos a preparar nuestro proyecto de Eclipse y vamos a configurar convenientemente el AndroidManifest para poder hacer uso del servicio GCM y su libreria auxiliar.
Una vez definido nuestro AndroidManifest con todos los elementos necesarios vamos a empezar a implementar la funcionalidad de nuestra aplicacion de ejemplo.
El siguiente boton es el de registro del cliente en GCM, y aqui si nos detendremos un poco para comentar primero como funciona internamente este procedimiento.
La aplicacion android debe solicitar el registro en el servicio GCM mediante una peticion HTTP POST similar a la que ya vimos en el articulo anterior para la aplicacion web. Veamos primero como realizar el registro de nuestra aplicacion en GCM al pulsar el boton de registro. El metodo registroServidor() sera el encargado de realizar la conexion al servicio web y de la llamada al metodo web de registro. Por su parte, en los metodos de des-registro y de error me limitare a escribir un mensaje en el log de la aplicacion para no complicar demasiado el ejemplo, pero en una aplicacion real deberiamos verificar estas respuestas. Por ultimo, en el metodo onMessage() procesaremos el intent con los datos recibidos en el mensaje y mostraremos una notificacion en la barra de estado de Android. Y solo una indicacion mas, ademas de sobrescribir estos metodos en nuestra clase GCMIntentService, tambien tendremos que anadir un nuevo constructor sin parametros que llame directamente al constructor de la clase base pasandole de nuevo el Sender ID que obtuvimos al crear el nuevo proyecto en la Google API Console.
Si no ha quedado claro del todo como quedaria la clase GCMIntentService completa puede descargarse y consultarse el codigo fuente completo al final del articulo.


Y con esto habriamos terminado de implementar nuestra aplicacion Android capaz de recibir mensajes push desde nuestra aplicacion web de ejemplo. Como habeis podido comprobar en estos tres ultimos articulos, la utilizacion de mensajes push requiere de un proceso algo laborioso pero para nada complicado. Esto es genial, pero no he podido ponerlo a funcionar desde un dispositivo, desde el el emulador todo es ok, pero en el log del celular siempre me sale “AUTHENTICATION_FAILED”, ya he verificado y la cuenta de gmail esta sincronizada pero siempre que trata de registrarse me saca ese error, sera que me podrias dar una mano? Solo me queda una duda, cual es la longitud exacta o maxima que puede tener el Registration ID asignado al cliente?
Bueno primero que todo felicitaciones por la guia, me a sido de bastante ayuda, cuesta mucho encontrar ayuda como esta. No se si debe faltar algo en la parte dedicada a des-registrar el dispositivo, ya que dices que habria que hacerlo mas elaborado.
Me queda una duda… en que momento se especifico que las notificaciones deben lanzarse asi la aplicacion no este en ejecucion, es decir: el hecho de que se presione el boton registrar GCM hace que se genere una peticion al servidor, pero si la aplicacion no se ejecuta, ?Como hace para que se genere la notificacion?
Buenas, tengo una app y me gustaria una vez enviada la notificacion push al otro usuario como desactivar el servicio, es decir, yo tengo una activity y hago uso de la clase GCMIntentService para mandar la notificacion, a continuacion quiero desactivar esta clase porque mas adelante vuelvo a hacer uso del sistema push pero en otro activity y utilizando otra clase GCMIntentService2. Me ha pillado el cambio justo en mitad de la prueba… y estoy haciendo el cambio a la nueva version. Queda prohibida la reproduccion total o parcial de los contenidos de este blog, asi como su uso y difusion, sin el consentimiento previo de su autor.
Uso de cookiesEste sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. O servico GCM lida com todos os aspectos de enfileiramento de mensagens e entrega para o destino de aplicativo Android em execucao no dispositivo de destino, e e totalmente gratuito.
A razao para isso e que, quando uma mensagem automatica e recebida, o navegador pode iniciar um trabalhador de servico, que e executado em segundo plano, sem uma pagina a ser aberta, e enviar um evento para que voce possa decidir como lidar com essa mensagem de envio. Quando o registro foi concluida com exito chamamos initialiseState(), que nos vamos cobrir em breve.
We will be creating a Client service that allows you to register your Android Device into GCM server.
Tienes disponible un nuevo articulo del curso donde aprender a utilizar esta nueva version. Para cerrar el circulo, en este nuevo articulo nos centraremos en la aplicacion Android cliente.
Por suerte, este procedimiento se ve simplificado enormemente con el uso de la libreria gcm.jar, ya que el montaje y ejecucion de esta peticion queda encapsulado como una simple llamada a un metodo estatico de la clase GCMRegistrar, definida en la libreria.
Como hemos dicho esto se limitara a llamar a un metodo estatico, llamado register(), de la clase GCMRegistrar.
Pero esto es solo la peticion de registro, ahora nos tocara esperar la respuesta, algo que veremos en breve.
Se llamara al recibirse una respuesta correcta a la peticion de registro e incluye como parametro el Registration ID asignado a nuestro cliente.
Al recibir una respuesta satisfactoria a la peticion de registro recuperaremos el nombre de usuario almacenado y junto con el Registration ID recibido nos conectaremos al servicio web que creamos en el articulo pasado pasandole dichos datos.
No me detendre en comentar el codigo de este metodo porque es analogo a los ejemplos ya vistos en el articulo que dedicamos a servicios web SOAP en Android.
El intent recibido contendra un elemento en su coleccion de extras por cada dato adicional que se haya incluido en la peticion que hizo la aplicacion servidor al enviar el mensaje. Al final del metodo llamamos a un metodo auxiliar mostrarNotificacion() que sera el encargado de mostrar la notificacion en la barra de estado de Android.


Os animo a que lo intenteis en vuestras aplicaciones ya que puede representar una caracteristica interesante y util. Para utilizar gcm en el emulador tengo entendido que hace falta una cuenta configurada en el. El caso es que, una vez des-registrado y comprobado que el evento onUnregistered es lanzado, sigo recibiendo las notificaciones enviadas del servidor.
Ya que el problema es que al recibir el push en el otro dispositivo lo recibe por el GCMIntentService y no por el nuevo GCMIntentService2.
Si quieres emplear alguno de los textos o imagenes de este blog puedes solicitarlo por correo electronico a la direccion indicada en la seccion de contacto. The GCM Server will generate a registration ID and returns it to your Android Device and by using the registration ID in our PHP web server will allow notification messages to be sent. Y por ultimo el punto 3 lo implementaremos mediante la conexion al servicio web SOAP que creamos en el articulo anterior, sirviendonos para ello de la libreria ksoap2, tal como ya describimos en los articulos sobre servicios web SOAP en Android. En caso de realizarse de forma correcta este registro la aplicacion enviara automaticamente el Registration ID recibido y el nombre de usuario almacenado a la aplicacion web a traves del servicio web.
Con esto nos aseguraremos de que la aplicacion no se instala en dispositivos con version de Android anterior, no soportadas por el servicio GCM.
Como este es un tema ya visto en el curso no me detendre en el codigo ya que es bastante directo.
Por su parte, tanto la respuesta a esta peticion de registro como la posterior recepcion de mensajes se reciben en la aplicacion Android en forma de intents.
La unica precaucion que tomaremos es verificar previamente si estamos ya registrados, algo que podremos hacer facilmente llamando al metodo getRegistrationId() de la misma clase. Pero no lo haremos desde cero, ya que la libreria de GCM nos proporciona una clase base GCMBaseIntentService de la cual podemos extender la nuestra, con la ventaja de que tan solo tendremos que sobrescribir unos pocos metodos a modo de callbacks, uno por cada posible respuesta o mensaje que podemos recibir desde el servicio GCM.
El contenido del mensaje se recibe en forma de intent, el cual veremos mas adelante como procesar. Now it’s recommended to implement Google Cloud Messaging(GCM) using the Google Play Services library. Y aqui es donde entran en juego los dos componentes que hemos definido anteriormente en nuestro AndroidManifest. Tengo configurado un proxy en el emulador y tengo acceso a internet a traves del browser, esto es lo raro, ?alguien podria darme una pista de que me pasa? Obviamente todo este proceso de registro y des-registro deberia hacerse de forma transparente para el usuario de una aplicacion real, en esta ocasion he colocado botones para ello solo por motivos didacticos. I know setting up the project is the annoying part, but we have to do this if we want to implement our code. Como ya dijimos, el broadcast receiver no sera necesario crearlo ya que utilizaremos el ya proporcionado por la libreria. Aunque una vez mas la libreria de GCM nos facilitara esta tarea como ya veremos mas adelante.



Cloud computing and future
How to start backup in icloud email


Comments

  1. 08.06.2014 at 16:42:41


    Able to utilize their robust features, got.

    Author: NIGHTWOLF
  2. 08.06.2014 at 16:24:44


    With global data centers and established works by giving.

    Author: RASIM