1. Introdução
Em comparação com a API legada do FCM, a API HTTP v1 do FCM oferece um modelo de autorização mais seguro usando tokens de acesso de curta duração. As etapas para gerar o token de acesso da API FCM v1 são significativamente diferentes das etapas da API legada.
Este codelab mostra o processo de configuração do lado do cliente e do servidor para ativar o envio de notificações push a um app Android usando a API HTTP v1 do FCM. Ele destaca a etapa principal da geração de credenciais para a API v1.
Para mais informações, acesse:
Pré-requisitos
- Conhecimento básico de desenvolvimento para Java e Android
O que você vai aprender
- Etapas detalhadas da configuração do lado do cliente e do servidor para ativar o envio de notificações push ao seu app Android usando a API HTTP v1 do FCM.
- Geração de credenciais para a API HTTP v1 usando contas de serviço
- Enviar mensagens de teste usando a API HTTP v1
Pré-requisitos
Versão estável mais recente do Android Studio
Um dos seguintes dispositivos:
- Um dispositivo Android físico conectado ao computador
- Um emulador do Android (consulte Executar apps no Android Emulator)
Um ambiente de desenvolvimento Java ou um editor de código de sua escolha
2. Configuração de projetos do Firebase e apps Android
Ao final do codelab, você poderá enviar mensagens para seu app usando o Firebase Cloud Messaging. Antes disso, você precisa criar um projeto do Firebase. Este codelab também oferece um app Android com um exemplo de código para integração com o FCM.
Configuração do projeto do Firebase
- Siga a "Etapa 1: Criar um projeto do Firebase" para criar seu próprio projeto do Firebase para este codelab.
Configuração do app Android
O app Android de exemplo fornecido neste codelab já está integrado ao FCM. Depois de iniciar, ele vai se registrar no servidor do FCM e se inscrever em um tópico. Nas etapas posteriores deste codelab, você vai enviar uma mensagem para o tópico, e seu app vai recebê-la.
- Baixe o exemplo de início rápido do Firebase para Android.
- Importe o projeto em https://github.com/firebase/quickstart-android/tree/master/messaging para o Android Studio.
- Registre o app no console do Firebase. O nome do app é
com.google.firebase.quickstart.fcm. Registre o app no seu projeto do Firebase seguindo as etapas na seção "Etapa 2: registrar seu app com o Firebase". - Siga a parte 1 da "Etapa 3: Adicionar um arquivo de configuração do Firebase" para baixar
google-services.jsone adicionar ao seu projeto. Crie e execute o projeto.
3. Configurar o servidor de aplicativos
Agora que o app está configurado, baixe um exemplo de código do lado do servidor para enviar mensagens ao app usando a API FCM v1. Esse código carrega as credenciais da API (descritas na próxima seção) para gerar um token de acesso. Em seguida, ele envia uma mensagem para seu app usando o envio de mensagens por tópico do FCM.
- Importe o código inicial do servidor fazendo o download do projeto do GitHub. O projeto "messaging" é um projeto Java baseado em Gradle com uma dependência do SDK firebase-admin, que oferece funcionalidade para enviar mensagens.
Mais detalhes sobre como um servidor de apps funciona com o FCM podem ser encontrados no documento Seu ambiente de servidor e o FCM.
4. Receber credenciais da v1
A API HTTP v1 do FCM usa tokens de acesso de curta duração de acordo com o modelo de segurança OAuth2. Em comparação com a chave de API estática usada na API legada do FCM, o token de acesso de curta duração é menos propenso ao risco de vazamento de credenciais. Esta seção detalha as etapas para criar uma credencial para gerar o token de acesso usado na chamada da API.
- Configure uma conta de serviço do Firebase para permitir que o SDK Admin do Firebase autorize chamadas para as APIs do FCM. Abra Configurações do projeto no Console do Firebase e selecione a guia Contas de serviço. Clique em Gerar nova chave privada para fazer o download do snippet de configuração.

- No projeto do GitHub baixado, renomeie o arquivo baixado como
service-account.jsone copie-o para o caminhomessaging/do projeto. - O método
getAccessToken()(mostrado abaixo) na classeMessaging.javagera um token OAuth2 válido por uma hora.
private static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES));
googleCredentials.refresh();
return googleCredentials.getAccessToken().getTokenValue();
}
- Mude o método principal para adicionar a seguinte linha:
public static void main(String[] args) throws IOException {
System.out.println(getAccessToken());
...
}
- Acesse o diretório do projeto messaging/ no terminal e digite:
./gradlew run -Pmessage=common-message
para imprimir o token OAuth2.
Para mais informações, consulte Autorizar solicitações de envio.
5. Enviar uma mensagem com a API REST
Agora você pode enviar uma mensagem pela API HTTP v1. Siga as etapas abaixo:
- Para adicionar o token de acesso a um cabeçalho de solicitação HTTP:
- Adicione o token como o valor do cabeçalho de autorização no formato
Authorization: Bearer <access_token> - Faça uma solicitação HTTP para a API v1 do FCM usando curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
O $topic_name acima pode ser encontrado no código do app Android mencionado na configuração do projeto do Firebase e do app Android. Por padrão, ele é "weather".
- Depois que uma mensagem é entregue, uma notificação aparece na tela, semelhante à imagem abaixo:

6. Conclusão
Parabéns! Você concluiu o codelab para:
- Configurar um projeto do Firebase
- Integrar o Firebase a um app Android
- Criar credenciais para a API HTTP v1 do FCM
- Enviar uma mensagem para seu app usando a API HTTP v1 do FCM
Para conhecer os recursos avançados oferecidos pelo FCM, consulte as seguintes referências: