• Ramon Ferreira Silva

FCM: Firebase Cloud Message para Android

Atualizado: 10 de Jul de 2019


Firebase by Google

Com o anúncio do fim do serviço do Parse (Facebook), muitos desenvolvedores de Apps se sentiram órfãos, mas o Firebase veio para resolver isso.


Mas o pessoal do Firebase anunciou um novo leque de serviços, incluindo Host,

Autenticação de Usuários, Envio de Mensagens Push, Analise de Comportamento de usuários e muito mais. O melhor de tudo, a maioria é grátis e ilimitado, os serviços que não são ilimitados, possuem uma quota de uso no Plano Spark(Grátis).


 O Firebase Cloud Message


Anteriormente chamado de GCM, Google Cloud Message, o serviço foi incorporado ao Firebase e se torna o principal serviço de envio de Notificações Push do Google.

A novidade é que o FCM é cross-plataforma. Funciona com Apps Android, iOS, Web, Chrome (plugins) e tem ports para linguagens como C++.


Recursos Chave



Firebase Cloud Message para Android


Neste post veremos como utilizar o Firebase Cloud Message no Android, em breve postarei para iOS também.


Configurando o Firebase Cloud Message


Primeiro adicionamos o google message services ao classpath da aplicação.

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

Depois insira a dependência do Firebase Core e Firebase Cloud Message no arquivo de build da Aplicação (app/build.gradle).

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
   //Firebase Core
    compile 'com.google.firebase:firebase-core:9.0.0'

    //Firebase Cloud Message
    compile 'com.google.firebase:firebase-messaging:9.0.0'
}

// Adicione no final do Arquivo (última linha se possível)
apply plugin: 'com.google.gms.google-services'

Criamos um service para o Firebase no nosso Arquivo de Manifest

Manifest.xml


O Serviço MyFirebaseMessagingService trata o recebimento de mensagens vindas do Firebase Cloud Message, já o Serviço MyFirebaseInstanceIDService, trata eventos de registro e obtenção de ID do Google Play, que podemos guarda para futuras referências.


Recebendo Uma mensagem do Firebase Cloud Message



Podemos receber mensagens em duas situações diferentes: Aplicativo em Primeiro Plano e Aplicativo em Background ( ou fechado )Estado da AplicaçãoNotificaçãoDadosNotificação + DadosEm primeiro plano onMessageReceived BackgroundCentral de Notificações do AndroidonMessageReceivedNotificação: Central de Notificações do Android

Data: obtemos como parâmetros extras da nossa Intent que irá tratar o evento.

Mensagens em Primeiro Plano

Vamos primeiro tratar da Notificação com a aplicativo em primeiro plano, implementando nosso método onMessageReceived do nosso MyFirebaseMessagingService.

@Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(getApplicationContext())
                        .setContentTitle("Notificação do Firebase")
                        .setSound(defaultSoundUri)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentText(remoteMessage.getNotification().getBody());

        NotificationManager mNotificationManager =
                (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);


        mNotificationManager.notify(ID_NOTIFICACAO, mBuilder.build());

    }

Aqui, basicamente recebemos o objeto RemoteMessage, nele temos a nossa Notificação através do Método getNotification(). caso queira pegar os dados extras, basta chamar getData().


Mensagens em Segundo Plano


As mensagens em Segundo plano vão para a Central de Notificações do Android. E podemos tomar algumas ações caso o usuário abra a mensagem.

Primeiro configuraremos a Intent para abrir a mensagem.



Declarando as intento para receber a notificação


Agora devemos configura o campo click_action do objeto payload da notificação. Isso nada mais é que enviar um JSON junto com a notificação mapeando o evento click para a nossa Intent OPEN_ACTIVITY_1. Para saber mais acesse a página Notification Payloads.

Com isso nossa service irá receber a notificação quando o usuário clicar nela.


Testando


Para testar o envio de mensagens para o seu Aplicativo :

  1. Entre no Firebase Console.

  2. Abra a aba Notifications

  3. Selecione New Message

  4. Digite o texto da Mensagem e configure os Payloads

  5. Selecione o Publico Alvo App/App Version, Device Language, ou Users in Audience.

  6. Clique em Send Message.


Conclusão


O Serviço do Firebase Cloud Message veio para preencher essa lacuna deixada pelo Parse.com e respondeu muito bem as nossa expectativas. O tendo o Google como Parceiro, o serviço só tende a crescer e se popularizar ainda mais.

Caso tenham alguma dúvida ou sugestão, é só deixar  um comentário.

Código Fonte no Github

#Dicas #Mobile #google #java #IOS #baas #iphone #firebase

141 visualizações