Do que se trata o artigo:

Este artigo trata da Cloud To Device Messaging API (C2DM), que permite que um dispositivo Android receba mensagens de uma aplicação servidor. Uma vez recebida essa mensagem, é possível tomar uma ação, como iniciar a comunicação com o servidor e obter uma determinada informação.


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 C2DM isso não é mais preciso, uma vez que, quando o servidor tiver uma atualização, ele poderá avisar para os clientes que existe uma nova informação disponível, e então a aplicação Android poderá baixá-la.

Resumo DevMan:

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 limitados de uma operadora. Para evitar esse tipo de problema, o Android conta com a C2DM, para que os clientes sejam notificados para buscar uma determinada informação apenas quando ela estiver disponível. Além disso, a C2DM pode servir, por exemplo, para informar os usuários sobre promoções e descontos em um site.

Autores: Nelson Glauber de Vasconcelos Leal e Felipe Azevedo de Vasconcelos

A comunicação Cliente/Servidor é a que mais vemos atualmente no mundo de TI, onde um cliente inicia a comunicação enviando uma requisição para o servidor que a responde da maneira apropriada. Entretanto, se uma aplicação precisar exibir informações que são atualizadas no servidor com uma frequência variada, como por exemplo, uma aplicação de notícias, isso pode fazer com que o cliente demore um pouco até obter a informação atualizada.

Nesses casos, os desenvolvedores recorrem a algum tipo de agendamento, para que, de tempos em tempos, seja feita uma verificação de atualizações no servidor. Essa abordagem funciona, mas o processamento que é feito para realizar a busca por novas atualizações pode, em vários casos, não retornar nenhuma nova informação. Dessa forma, gastamos desnecessariamente a bateria e o plano de dados do usuário, que muitas vezes é cobrado por bytes trafegados.

Outro cenário que podemos avaliar é quando a empresa deseja divulgar oportunidades de negócios para os usuários da sua aplicação mobile. Nesse caso, o usuário teria que ficar entrando na aplicação para checar se existe alguma oportunidade para ele, e isso não parece nada interessante.

Com a Cloud To Device Messaging API (C2DM) o cliente pode receber mensagens de um servidor com informações pertinentes de uma aplicação, sem ter que executá-la. O processo funciona da seguinte forma: o desenvolvedor registra sua aplicação web no Google preenchendo um formulário simples. Em seguida, para que a aplicação cliente receba essas mensagens, ela solicita um código de acesso aos servidores do Google e o envia para a aplicação web. Uma vez que a aplicação cliente está registrada, a aplicação web poderá enviar mensagens para todos os seus clientes através do servidor do Google, que é quem conhece os clientes.

Para explicar esses conceitos na prática, esse artigo será composto por duas pequenas aplicações: a servidor, que constará de dois Servlets bem simples, sendo um para enviar as mensagens para os clientes e outro para registrá-los; e a mobile em Android, que se registrará na aplicação web e receberá as mensagens vindas dela.

Introdução ao Cloud To Device Messaging

O suporte a C2DM surgiu na versão 2.2 (Froyo) do Android, permitindo receber mensagens do servidor conhecidas como “push notifications”. Como explicamos anteriormente, esse processo envolve três partes: a aplicação web que quer enviar mensagens para os dispositivos Android; a aplicação Android que receberá as mensagens; e os servidores de C2DM do Google que recebem as mensagens e as repassam para os dispositivos Android. As principais características da C2DM são:

· Permite que aplicações servidoras enviem mensagens curtas para suas respectivas aplicações Android. O objetivo não é enviar grandes quantidades de dados, e sim notificar os clientes da existência desses dados para que eles possam baixá-los;

· A aplicação Android não necessita estar rodando para que a informação seja recebida. Similar ao que temos na aplicação de SMS;

· Ela não provê nenhuma interface gráfica padrão;

· É necessário que o dispositivo Android esteja com uma versão 2.2 ou superior, com uma conta do Google criada e com o Google Play (antigo Android Market) instalado.

O serviço de C2DM provido pelo Google possui algumas limitações das quais os desenvolvedores precisam estar cientes antes de empregá-lo em suas aplicações, a saber:

· As mensagens só podem ter até 1024 bytes;

· Ele não garante a ordem em que as mensagens são enviadas. Portanto, criar uma aplicação como um chat, por exemplo, não seria apropriado;

· A cota padrão é de 200 mil mensagens por dia. Se o desenvolvedor precisar de mais, terá que solicitar ao Google.

Registrando a aplicação servidora

Para iniciar a utilização do C2DM, a primeira coisa a se fazer é registrar a aplicação nos servidores do Google. Para isso, acesse a página de registro do C2DM (veja a seção Links), leia os termos de uso e clique em continuar. Logo após, preencha o formulário que contém os seguintes campos:

· O nome do pacote da aplicação Android. Aqui utilizaremos ngvl.android.c2dm;

· A segunda pergunta é se o aplicativo está no Android Market (atualmente Google Play). Para o nosso exemplo, marque não;

· A próxima pergunta é a quantidade estimada de mensagens por dia. Como estamos apenas testando esse recurso, informe 100;

· Em seguida nos é questionada a quantidade de mensagens que iremos enviar ao máximo por segundo. Neste campo, informe 0 a 5;

· O campo de informações adicionais não é obrigatório, então pularemos para a seção de contatos;

· O e-mail de contato será usado para notificar o desenvolvedor sobre algo relativo ao C2DM, como manutenção em servidores ou novos recursos adicionados;

· A informação Role (account) email é a mais importante, pois é com ela que a aplicação servidora autentica-se no servidor C2DM do Google e envia as mensagens para os clientes. Essa conta será utilizada no código-fonte, onde constará o usuário e senha, por isso aconselhamos criar uma conta de teste no Google;

· A última informação é um complemento do e-mail de contato. Nesse campo você pode adicionar um telefone e outro e-mail de contato, caso a equipe do Google precise relatar algo urgente sobre o C2DM.

Feito o registro, vamos implementar a aplicação servidora que enviará informações para os clientes Android.

A aplicação servidora

A aplicação servidora pode ser escrita em qualquer linguagem de programação (PHP, Java, Ruby, etc.). Obviamente aqui optamos por Java. Ela terá duas funções: armazenar os ids dos dispositivos Android e enviar mensagens para o servidor C2DM do Google por meio de requisições via método POST do protocolo HTTP.

Para criar essa aplicação precisaremos do Eclipse for Java EE Developers e um container web Java, que no nosso exemplo será o Tomcat 7. Os endereços para download destas ferramentas estão na seção Links.

Depois de instalados, crie um Dynamic Web Project no Eclipse selecionando a opção correspondente no menu File > New.... Veja Figura 1.

Figura 1. Assistente para criação de um Dynamic Web Project.

Daremos o nome do projeto de “C2DMWebServer”. No campo Target Runtime, se não existir um container web (como o Tomcat), devemos adicioná-lo clicando no botão New runtime.... Veja a Figura 2.

Figura 2. Tela de configuração de servidores do Eclipse.

Escolha Apache Tomcat v7.0 e clique em Next para exibir a tela da Figura 3. Selecione o diretório de instalação do Tomcat e clique em ...

Quer ler esse conteúdo completo? Tenha acesso completo