Depuis sgcWebSockets 2024.9.0, un nouveau composant client permet d'envoyer des notifications via Google Firebase Cloud Messaging et la dernière API HTTP v1.
Les applications qui utilisent les anciennes API FCM pour HTTP et XMPP doivent migrer vers l'API HTTP v1 dès que possible. L'envoi de messages (y compris les messages en amont) via ces API a été déprécié le 20 juin 2023, et l'arrêt commence le 22 juillet 2024.
En plus du support continu et des nouvelles fonctionnalités, l'API HTTP v1 présente les avantages suivants par rapport aux API existantes :
- Meilleure sécurité grâce aux jetons d'accès. L'API HTTP v1 utilise des jetons d'accès à courte durée de vie selon le modèle de sécurité OAuth2. Si un jeton d'accès devient public, il ne peut être utilisé de façon malveillante que pendant environ une heure avant d'expirer. Les jetons de rafraîchissement sont transmis moins souvent que les clés de sécurité utilisées dans l'ancienne API, ils sont donc bien moins susceptibles d'être interceptés.
- Personnalisation plus efficace des messages entre plateformes. Pour le corps du message, l'API HTTP v1 dispose de clés communes qui s'appliquent à toutes les instances ciblées, ainsi que de clés spécifiques à chaque plateforme qui te permettent de personnaliser le message selon la plateforme. Cela te permet de créer des « overrides » qui envoient des payloads légèrement différents aux différentes plateformes clientes dans un seul message.
- Plus extensible et pérenne pour les nouvelles versions de plateformes clientes. L'API HTTP v1 prend en charge l'ensemble des options de messagerie disponibles sur les plateformes Apple, Android et Web. Comme chaque plateforme possède son propre bloc défini dans le payload JSON, FCM peut étendre l'API à de nouvelles versions et de nouvelles plateformes au besoin.
Client Delphi Google FCM
Firebase Cloud Messaging (FCM) est une solution de messagerie multiplateforme qui te permet d'envoyer des messages de façon fiable et gratuite.
Avec FCM, tu peux notifier une application cliente qu'un nouvel e-mail ou d'autres données sont disponibles pour la synchronisation. Tu peux envoyer des messages de notification pour favoriser le réengagement et la rétention des utilisateurs. Pour des cas d'usage comme la messagerie instantanée, un message peut transférer un payload pouvant atteindre 4096 octets vers une application cliente.
Le composant prend en charge l'API HTTP v1.
AutorisationLe client du composant Google FCM peut se connecter aux serveurs Google en utilisant les méthodes suivantes :
- gcaOAuth2 : protocole OAuth2
- gcaJWT : jetons JWT.
OAuth2
La connexion s'effectue via un webbrowser où l'utilisateur se connecte avec son propre compte et autorise les requêtes FCM.
- GoogleCloudOptions.OAuth2.ClientId : est le ClientID fourni par Google pour s'authentifier via le protocole OAuth2.
- GoogleCloudOptions.OAuth2.ClientSecret : est la chaîne Client Secret fournie par Google pour s'authentifier via le protocole OAuth2.
- GoogleCloudOptions.OAuth2.Scope : est le scope d'OAuth2. En général, il n'est pas nécessaire de modifier la valeur par défaut, sauf si tu as besoin de plus d'accès que celui par défaut.
- GoogleCloudOptions.OAuth2.LocalIP : le protocole OAuth2 exige qu'un serveur écoute la réponse du serveur d'authentification. Il s'agit de l'IP ou du DNS. Par défaut : 127.0.0.1.
- GoogleCloudOptions.OAuth2.LocalPort : le port d'écoute du serveur local.
- GoogleCloudOptions.OAuth2.RedirectURL : si tu dois définir une url de redirection différente de LocalPort + LocalIP, tu peux le faire dans cette propriété (exemple : http://127.0.0.1:8080/oauth2).
Comptes de service
La connexion s'effectue en signant les requêtes avec une clé privée fournie par Google. Cette méthode est recommandée pour les services automatisés ou les applications sans interaction utilisateur.
- GoogleCloudOptions.JWT.ClientEmail : est le nom Client Email fourni lors de la création du nouveau compte de service. Nœud "client_email" du fichier de configuration JSON.
- GoogleCloudOptions.JWT.Subject : est le nom Client Email fourni lors de la création du nouveau compte de service. Nœud "client_email" du fichier de configuration JSON.
- GoogleCloudOptions.JWT.PrivateKeyId : est le Private Key Id fourni par Google. Nœud "private_key_id" du fichier de configuration JSON.
- GoogleCloudOptions.JWT.PrivateKey : est le certificat Private Key fourni par Google. Nœud "private_key" du fichier de configuration JSON.
Lorsqu'un nouveau compte de service est créé, tu peux télécharger un fichier JSON avec toutes les configurations. Ce fichier peut être traité par le composant FCM : appelle simplement la méthode LoadSettingsFromFile en passant le nom du fichier JSON en argument.
Exemple
Tu trouveras ci-dessous un exemple simple pour envoyer des notifications via FCM avec JWT comme méthode d'authentification.
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"}}}')
);
