C2DM
    Cloud 2 Device Message
                      Neto Marin
                      Globalcode




@netomarin
http://blog.netomarin.com
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.
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.
C2DM
passo a passo
   Habilitar C2DM

   Tratar o registro

  Enviar mensagem
      (servidor)

  Tratar mensagem
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.
Antes de
    começar...
 Para poder usar o serviço é
primeiro preciso se registrar:

https://developers.google.com/
     android/c2dm/signup
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.
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);
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
Removendo Registro

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

unregIntent.putExtra("app",
        PendingIntent.getBroadcast(this, 0,
                new Intent(), 0));
startService(unregIntent);
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
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
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
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.
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
Obrigado!
@netomarin

Cloud 2 Device Message Framework - AndroidRec

  • 1.
    C2DM Cloud 2 Device Message Neto Marin Globalcode @netomarin http://blog.netomarin.com
  • 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 • Registrarpermissã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 IntentregistrationIntent = 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ósregistrar a Intent de recebimento, com.google.android.c2dm.intent.RECEI VE, implementar o receiver. • O dado enviado estará na String extra payload.
  • 15.
    Referências • Android Cloudto Device Messaging Framework • https://developers.google.com/android/c2dm/ • Android Cloud to Device Messaging (C2DM) - Tutorial • http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/ article.html
  • 16.