Firebase Cloud Messaging (FCM)

O Cloud Messaging é um serviço do Firebase que permite enviar mensagens/notificações aos nossos utilizadores de forma simples.

Para utilizar a plataforma, precisamos de escrever o código em 2 partes: Uma no servidor para enviar as mensagens e uma no lado do cliente para poder receber as mensagens.

Mas porque estamos a falar sobre o FCM?

Você provavelmente já se deparou com o caso de estar a utilizar o Firebase e precisar de notificar os seus utilizadores quando acontece algo que irá lhes interessar na base de dados, como por exemplo quando há uma nova mensagem ou quando eles têm um novo seguidor.

Sim, o Cloud Messaging permite que enviemos as notificações para os utilizadores, mas ele não tem como saber sobre as alterações que ocorrem na base de dados. Por isso, fazemos a junção do FCM com o novo membro da famíla Firebase — Cloud Functions.

Vamos à prática

Vamos então criar uma função simples que notifica o utilizador sempre que há uma nova mensagem na sua caixa de entrada. Para isso, temos de ter a nossa base de dados com uma estructura semelhante a esta:

Note que temos o atributo “Firebase Token”. Este atributo guarda o Token que o FCM utiliza para o envio de mensagens. Esse Token é obtido na aplicação Android onde o utilizador irá receber notificações. Vamos começar então por obter este id, integrando o Firebase Cloud Functions na nossa aplicação Android.

Adicionar o Firebase Cloud Messaging ao Android

Como todas as funcionalidades do Firebase, temos de adicionar a sua dependencia ao gradle:

dependencies {
compile 'com.google.firebase:firebase-messaging:10.2.1'
}

Em seguida, temos de criar 2 serviços e adicioná-los ao Manifest:

  • O primeiro serviço tem de herdar do FirebaseMessagingService. Este serviço irá permitir receber mensagens, mesmo que a aplicação esteja no background.
  • O segundo serviço herdará do FirebaseInstanceIdService para manter o nosso Token sempre actualizado.
Os nossos services no AndroidManifest.xml

Vamos começar por criar o MeuFirebaseInstanceIDService pois ele será responsável por manter o nosso Token actualizado na Realtime Database. Para fazer isso, basta sobrecarregarmos o método onTokenRefresh():

E assim temos o lado do cliente funcional. Vamos ao lado do servidor.

Criar a nossa função

Então criamos a função que irá obter o Firebase Token do nosso destinatário, encontrar esse utilizador no Firebase Authentication e por fim enviar a nossa notificação:

E pronto. Da próxima vez que o seu utilizador receber uma mensagem, o Cloud Functions será responsável por notificá-lo. :)

No 4º artigo desta série, vemos como utilizar o Firebase Cloud Functions para limpeza e manutenção da nossa base de dados:

Se você tem alguma dúvida ou sugestão, não hesite em me contactar pelo email rosariofernandes51@gmail.com ou pelo Telegram. Ficarei feliz por conversar com você. :)

--

--

Rosário Pereira Fernandes
GDG Maputo

Firebase DevRel Engineer at Google … Views and Opinions are my own.