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.json
e 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.json
e copie-o para o caminhomessaging/
do projeto. - O método
getAccessToken()
(mostrado abaixo) na classeMessaging.java
gera 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: