Por que eu devo ler este artigo:Este artigo aborda o serviço gratuito da Google para troca de mensagens entre servidores e aplicações Android, apresentando brevemente a arquitetura geral do serviço, os principais parâmetros de sua API e, por fim, uma aplicação de teste que foi desenvolvida para demonstrar o uso da solução na prática. Vale destacar que estabelecer um canal de relacionamento com seus clientes vem sendo considerada a melhor forma de manter uma base ativa de usuários, evitando assim que seu aplicativo caia em desuso e, eventualmente, seja removido do dispositivo. O GCM é uma solução simples, completa e gratuita que a Google desenvolveu para que os desenvolvedores possam criar um canal troca de informações atualizadas com seus aplicativos Android.

Lançado na Google I/O do ano passado em substituição ao antigo Cloud to Device Messaging (C2DM), o serviço obteve uma taxa de crescimento de 400% em 10 meses. No mesmo período, mais de 60% dos aplicativos mais populares do Google Play já faziam uso do GCM. Diferentemente da abordagem de Pulling, onde a aplicação mantém um processo sempre ativo somente para ficar verificando se há novas atualizações no servidor da aplicação, o conceito de Push Notifications que o GCM utiliza permite o envio de mensagens mesmo que a aplicação não esteja executando. Além da simplicidade, isso diminui significativamente o consumo de recursos como processamento, memória, rede de dados e bateria.

As Figuras 1 e 2 ilustram a diferença entre a abordagem de Pulling e Push Notifications.

Figura 1. Funcionamento do Pulling.

Figura 2. Push de Mensagem usando GCM.

O Google Cloud Messaging permite que sejam enviados dois tipos de mensagens. O primeiro tipo são as Send to Sync Messages – que nada mais são que notificações para que a aplicação saiba que o servidor possui novos dados a serem sincronizados. Por exemplo, novo e-mail recebido, nova foto compartilhada por um amigo etc. O segundo tipo são as Send Data Messages – pacotes que possuem até 4KB de informações incluídas no corpo da mensagem. Por exemplo, uma mensagem de aplicativo de chat, atualização do resultado de uma partida de futebol etc.

Na Figura 2 é possível identificar o funcionamento básico do serviço. Onde o Client App representa um aplicativo instalado em um dispositivo Android 2.2 ou superior (ou seja, minSdkVersion igual ou maior que 8). O GCM Connection Servers são os servidores da Google que proveem o serviço de troca de mensagens utilizando os protocolos HTTP e XMPP, e o 3rd-Party Application Server é o servidor da aplicação. A interação entre estes componentes pode ser divida em três etapas. São elas:

1. Registro no GCM – Para fazer uso do serviço, é necessário que a aplicação faça um registro no GCM através do método register() de GoogleCloudMessaging. Este método retorna um registration ID – identificador único do dispositivo que precisa ser passado para o servidor da aplicação de forma que o mesmo tenha como configurar o destinatário das mensagens que enviar;

2. Envio de mensagem – Considerando o fluxo “servidor > aplicação”, cada mensagem enviada segue os seguintes passos:

a. Servidor da aplicação envia a mensagem para os servidores do GCM;

b. O GCM coloca a mensagem em sua fila de envio. Neste momento é feita uma cópia local dos dados da mensagem caso o dispositivo destino esteja temporariamente offline (ou desligado ou sem rede de dados);

c. Assim que o dispositivo é identificado como online, o GCM envia a mensagem para ele.

3. Recebimento da mensagem – Novamente considerando o fluxo “servidor > aplicação”, ao chegar ao dispositivo o sistema se comporta da seguinte forma:

a. Envia um Intent broadcast esperando que o aplicativo para o qual a mensagem foi enviada capture esta mensagem. É importante destacar que a aplicação não precisa estar executando neste momento – o framework do GCM é responsável por ‘acordar’ a aplicação que precisa tratar a mensagem;

b. Aplicação processa a mensagem recebida.

Outro ponto importante da solução está no cuidado relacionado à segurança do serviço. Em diversos momentos do uso do GCM, é necessário criar e configurar um conjunto de definições de credenciais que são usadas para indicar que os acessos a todas as partes envolvidas foram devidamente autenticados e as mensagens seguirão para o destino correto. Os tipos de credenciais são apresentados na Tabela 1.

abrir imagem em nova janela

Tabela 1. Tipos de credenciais.

A API

Uma das maiores vantagens da solução está na flexibilidade que a mesma disponibiliza para que o desenvolvedor configure o comportamento da troca de mensagens de sua aplicação. Os seguintes parâmetros podem ser usados para isso:

· Time to Live - Tempo de expiração da mensagem. Se o GCM percebe que a mensagem ficou na fila de envi ...

Quer ler esse conteúdo completo? Tenha acesso completo