O documento explica o serviço C2DM da Google que permite enviar mensagens de aplicativos em servidores para dispositivos Android. O C2DM cuida da fila de mensagens e entrega aos dispositivos. Para usar o C2DM, os desenvolvedores precisam registrar seus dispositivos e aplicativos no serviço, enviar mensagens de seus servidores autenticados para o serviço da Google que fará a entrega, e implementar receivers nos dispositivos para receber as mensagens.
2. Neto Marin
• Trabalhando com mobilidade
desde 2006 e fuçando com
Android desde 2008.
• Fundador da lista
AndroidBrasil-dev com mais
de mil participantes.
• Coordenador das trilhas de
mobilidade do TDC.
• Autor da Academia Android
da Globalcode.
3. O que é o C2DM ?
• É um serviço que ajuda os desenvolvedores
enviar dados dos seus servidor para os
dispositivos desejados.
• O serviço é uma ferramenta leve e que pode
ser utilizado para informar a aplicação móvel
para contactar o servidor, receber uma
atualização ou dados do usuário.
• Esse serviço trata todos os aspectos da fila das
mensagens e a entrega aos dispositivos finais.
4. C2DM
passo a passo
Habilitar C2DM
Tratar o registro
Enviar mensagem
(servidor)
Tratar mensagem
5. Registrar o device
• Na primeira vez que a aplicação precisar usar o
C2DM, deve ser disparada uma Intent de registro
para com.google.android.c2dm.intent.REGISTER
que deve conter:
• Sender ID: conta autorizada a enviar
mensagens para a aplicação. Normalmente é
o endereço de e-mail configurado pelo
desenvolvedor.
• Application ID: Id da aplicação que deseja
receber as mensagens.
6. Antes de
começar...
Para poder usar o serviço é
primeiro preciso se registrar:
https://developers.google.com/
android/c2dm/signup
7. Configurando Manifest
• Registrar permissão de registrar e receber
mensagens:
• com.google.android.c2dm.permission.RECEIVE
• Permissão de Internet (!!!)
• Prevenir que outras aplicações leiam as
mensagens da sua app:
• applicationPackage + “.permission.C2D_MESSAGE
• Receivers para a Intent de Receive
adicionada acima.
8. Código Registro C2DM
Intent registrationIntent = new Intent(”
com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app",
PendingIntent.getBroadcast(this, 0,
new Intent(), 0));
registrationIntent.putExtra("sender",
emailOfSender);
startService(registrationIntent);
9. Retorno do Registro
• É preciso definir um receiver para tratar o retorno do
registro, para a Intent
com.google.android.c2dm.intent.REGISTRATION.
• Caso haja algum erro, um dos códigos será retornado:
• SERVICE_NOT_AVAILABLE
• ACCOUNT_MISSING
• AUTHENTICATION_FAILED
• TOO_MANY_REGISTRATIONS
• INVALID_SENDER
• PHONE_REGISTRATION_ERROR
10. Removendo Registro
Intent unregIntent = new Intent(”
com.google.android.c2dm.intent.UNREGISTER");
unregIntent.putExtra("app",
PendingIntent.getBroadcast(this, 0,
new Intent(), 0));
startService(unregIntent);
11. Servidor de Push
• Utilização de um servidor próprio.
• Deve armazenar ou receber o Registration ID
do device para realizar o envio.
• Irá chamar o servidor do Google, e esse
terminará o envio da mensagem.
• Instagram publicou o próprio servidor, feito em
Noje.js
• https://github.com/Instagram/node2dm
12. Autenticação no
Google
• O servidor também precisa se autenticar
com o Google, usando a conta fornecida no
cadastro.
• Via linha de comando:
curl https://www.google.com/accounts/ClientLogin -d
Email=your_user -d "Passwd=your_password"
-d accountType=GOOGLE
-d source=Google-cURL-Example -d service=ac2dm
13. Envio de Mensagem
• A mensagem que se deseja enviar deve ser
repassada ao Google, que se encarregará da
questão de filas e envios.
• Via linha de comando:
curl --header
"Authorization: GoogleLogin auth=AUTHENTICATION_ID"
"https://android.apis.google.com/c2dm/send"
-d registration_id=your_registration
-d "data.payload=MENSAGEM" -d collapse_key=0
14. Recebendo Mensagem
• Após registrar a Intent de recebimento,
com.google.android.c2dm.intent.RECEI
VE, implementar o receiver.
• O dado enviado estará na String extra
payload.