cloud 2 device message framework - androidrec

16
C2DM Cloud 2 Device Message Neto Marin Globalcode @netomarin http://blog.netomarin.com

Upload: antonio-marin-neto

Post on 06-Jun-2015

1.023 views

Category:

Technology


3 download

DESCRIPTION

Palestra tutorial sobre C2DM (Cloud 2 Device Message) apresentada na AndroidRec 2012.

TRANSCRIPT

Page 1: Cloud 2 Device Message Framework - AndroidRec

C2DMCloud 2 Device Message

Neto MarinGlobalcode

@netomarin

http://blog.netomarin.com

Page 2: Cloud 2 Device Message Framework - AndroidRec

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.

Page 3: Cloud 2 Device Message Framework - AndroidRec

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.

Page 4: Cloud 2 Device Message Framework - AndroidRec

C2DMpasso a passo

Habilitar C2DM

Tratar o registro

Enviar mensagem(servidor)

Tratar mensagem

Page 5: Cloud 2 Device Message Framework - AndroidRec

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.

Page 6: Cloud 2 Device Message Framework - AndroidRec

Antes de começar...

Para poder usar o serviço é primeiro preciso se registrar:

https://developers.google.com/android/c2dm/signup

Page 7: Cloud 2 Device Message Framework - AndroidRec

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.

Page 8: Cloud 2 Device Message Framework - AndroidRec

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);

Page 9: Cloud 2 Device Message Framework - AndroidRec

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

Page 10: Cloud 2 Device Message Framework - AndroidRec

Removendo Registro

Intent unregIntent = new Intent(” com.google.android.c2dm.intent.UNREGISTER");

unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));startService(unregIntent);

Page 11: Cloud 2 Device Message Framework - AndroidRec

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

Page 12: Cloud 2 Device Message Framework - AndroidRec

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

Page 13: Cloud 2 Device Message Framework - AndroidRec

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

Page 14: Cloud 2 Device Message Framework - AndroidRec

Recebendo Mensagem

• Após registrar a Intent de recebimento, com.google.android.c2dm.intent.RECEIVE, implementar o receiver.

• O dado enviado estará na String extra payload.

Page 15: Cloud 2 Device Message Framework - AndroidRec

Referências

• Android Cloud to Device Messaging Framework• https://developers.google.com/android/c2dm/

• Android Cloud to Device Messaging (C2DM) - Tutorial• http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/

article.html

Page 16: Cloud 2 Device Message Framework - AndroidRec

Obrigado!@netomarin