Google FCM HTTP v1 Delphi

· Componentes

A partir do sgcWebSockets 2024.9.0 há um novo componente cliente para Enviar Notificações usando o Google Firebase Cloud Messaging e a mais recente API HTTP v1.

Aplicativos que usam as APIs FCM legadas obsoletas para HTTP e XMPP devem migrar para a API HTTP v1 o quanto antes. O envio de mensagens (incluindo mensagens upstream) com essas APIs foi descontinuado em 20 de junho de 2023, e o desligamento começa em 22 de julho de 2024.

Além de suporte contínuo e novos recursos, a API HTTP v1 tem estas vantagens em relação às APIs legadas:

- Maior segurança via access tokens. A API HTTP v1 usa access tokens de curta duração de acordo com o modelo de segurança OAuth2. Caso um access token se torne público, ele só pode ser usado maliciosamente por cerca de uma hora antes de expirar. Os refresh tokens não são transmitidos com tanta frequência quanto as chaves de segurança usadas na API legada, então têm muito menos probabilidade de serem capturados.

- Personalização mais eficiente de mensagens entre plataformas. Para o corpo da mensagem, a API HTTP v1 possui chaves comuns que vão para todas as instâncias visadas, além de chaves específicas de plataforma que permitem personalizar a mensagem entre plataformas. Isso permite criar "overrides" que enviam payloads ligeiramente diferentes para diferentes plataformas cliente em uma única mensagem.

- Mais extensível e preparada para o futuro para novas versões de plataformas cliente. A API HTTP v1 oferece suporte total às opções de mensagens disponíveis nas plataformas Apple, Android e Web. Como cada plataforma tem seu próprio bloco definido no payload JSON, o FCM pode estender a API para novas versões e novas plataformas conforme necessário.

Cliente Google FCM para Delphi

O Firebase Cloud Messaging (FCM) é uma solução de mensageria multiplataforma que permite enviar mensagens de forma confiável e gratuita.

Usando o FCM, você pode notificar um aplicativo cliente de que novos e-mails ou outros dados estão disponíveis para sincronização. Você pode enviar mensagens de notificação para impulsionar o reengajamento e a retenção de usuários. Para casos de uso como mensagens instantâneas, uma mensagem pode transferir um payload de até 4096 bytes para um aplicativo cliente.

O componente suporta a API HTTP v1.

Autorização

O cliente componente Google FCM pode fazer login nos servidores Google usando os seguintes métodos:

OAuth2

O login é feito usando um webbrowser onde o usuário faz login com seu próprio usuário e autoriza as requisições do FCM.


Service Accounts

O login é feito assinando as requisições usando uma chave privada fornecida pelo google. Esse método é recomendado para serviços automatizados ou aplicativos sem interação do usuário.

Quando uma nova service account é criada, você pode baixar um arquivo JSON com todas as configurações. Esse arquivo pode ser processado pelo componente FCM, basta chamar o método LoadSettingsFromFile e passar o nome do arquivo JSON como argumento. 

Exemplo

Veja abaixo um exemplo simples para enviar notificações usando FCM e JWT como método de autenticação.

oFCM := TsgcHTTPGoogleCloud_FCM_Client.Create(nil);
oFCM.GoogleCloudOptions.Authorization := gcaJWT;
oFCM.LoadSettingsFromFile('sgcfirebase-7x92e-5c80b8506a6c.json');
oFCM.GoogleCloudOptions.JWT.Subject := GoogleFCM.GoogleCloudOptions.JWT.ClientEmail;
ShowMessage(
  oFCM.SendMessage('Project-id',
  '{"message": {"topic": "news","notification": ' +
  '{"title": "Breaking News",' +
  '"body": "New news story available."},"data": {"story_id": "story_12345"}}}')
);