Recursos especiais neste artigo:
Contém nota Quickupdate, Conteúdo sobre Solução Completa.
Para que uma aplicação possa verificar novas informações no servidor, é necessário um processamento, que além de consumir recursos e bateria, pode onerar o usuário, se ele estiver pagando por um pacote de dados limitado de uma operadora. Para evitar esse tipo de problema, o Android conta com a GCM, para que os clientes sejam notificados para buscar uma determinada informação apenas quando ela estiver disponível. Além disso, a GCM pode servir, por exemplo, para informar os usuários sobre promoções e descontos em um site. Com base nisso, neste artigo mostraremos como enviar informações de uma aplicação web para um dispositivo Android.
Em que situação o tema é
útil
Em diversas aplicações se
faz necessário verificar se existem atualizações (de algum tipo de informação)
disponíveis no servidor. Com GCM podemos implementar uma solução em que uma
aplicação servidora avisa para os seus clientes que existe uma nova informação
disponível, e então a aplicação Android poderá baixá-la.
Na Edição 107 da Java Magazine, falamos sobre a C2DM (Cloud To Device Messaging) API, que permite que uma aplicação servidora envie mensagens para dispositivos Android através dos servidores do Google. Na oportunidade, apresentamos os principais cenários em que ela se fazia necessária, sua arquitetura, e demonstramos na prática o seu funcionamento.
Entretanto, na última Google I/O (encontro anual dos desenvolvedores Google) a C2DM sofreu uma reformulação e passou a chamar-se Google Cloud Messaging, ou simplesmente GCM. Essa mudança deixou a utilização da API bem mais fácil, uma vez que o Google disponibilizou JARs para serem utilizados tanto nas aplicações Android quanto na aplicação servidora.
O GCM para Android é um serviço gratuito que ajuda desenvolvedores a enviar dados de aplicações servidoras para aplicações Android. O intuito não é trafegar uma grande massa de dados, e sim enviar mensagens simples (de até 4KB), para, por exemplo, avisar que há um novo dado a ser baixado da aplicação servidora. A aplicação servidora poderá enviar mensagens quando for necessário, e ficará a cargo dos servidores do GCM todo o enfileiramento dessas mensagens e a entrega das mesmas para as aplicações mobile.
As principais características do GCM são:
- Permite que uma aplicação servidora envie mensagens para aplicações Android;
- Não dá nenhuma garantia da entrega das mensagens e, no caso de entrega, da ordem em que isso ocorre;
- A aplicação Android não necessita estar rodando para receber as mensagens. O S.O. disparará uma mensagem que será tratada por um Broadcast Receiver (do próprio GCM) assim que uma mensagem chegar;
- Não provê nenhuma interface gráfica para tratar a mensagem. Simplesmente repassa a mensagem para que a aplicação a trate. Ou seja, a aplicação pode ser tratada da maneira que o desenvolvedor achar conveniente, como exibindo uma notificação, por exemplo;
- É necessário que o aparelho esteja rodando o Android 2.2 ou superior e ter o Google Play instalado;
- Utiliza comunicação com os serviços do Google. Deste modo, para dispositivos com versões anteriores à 4.0.4, é necessária uma conta do Google configurada no aparelho.
O GCM trouxe bem mais do que uma simples mudança de nome em relação ao C2DM. Diversas tarefas que tinham que ser implementadas pelo desenvolvedor agora estão encapsuladas em bibliotecas que estão disponíveis para download. Isso visa, além de facilitar o desenvolvimento e a adoção do serviço, trazer certa padronização do código.
Com base nisso, neste artigo focaremos nas principais mudanças introduzidas no GCM, desenvolvendo um projeto de exemplo. Ao final, teremos um aplicativo Android recebendo mensagens vindas da aplicação servidora.
Visão geral da arquitetura
Antes de começarmos a implementação do projeto, precisamos conhecer os termos e os elementos envolvidos na arquitetura do GCM. Eles estão divididos basicamente em duas categorias: os componentes e as credenciais.
O primeiro é composto pelos elementos que trocarão mensagens entre si. Os componentes envolvidos são:
· Dispositivo móvel: é o aparelho (smartphone ou tablet) que está rodando a aplicação Android. Ele deve usar a versão 2.2 ou superior e que tenha o Google Play instalado. Alternativamente podemos usar o emulador com as Google APIs;
· Servidores GCM do Google: recebem as mensagens da aplicação servidora e as entrega aos dispositivos registrados;
· Aplicação servidora: é a aplicação que recebe o registro do dispositivo móvel, armazena o seu id, e envia informações para eles através dos servidores GCM.
...Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.