Ab sgcWebSockets 2024.9.0 gibt es eine neue Client-Komponente zum Senden von Benachrichtigungen über Google Firebase Cloud Messaging und die neueste API HTTP v1.
Apps, die die veralteten FCM-Legacy-APIs für HTTP und XMPP nutzen, sollten möglichst bald auf die HTTP v1 API umsteigen. Das Senden von Nachrichten (auch Upstream-Nachrichten) über diese APIs wurde am 20. Juni 2023 als veraltet markiert, und die Abschaltung beginnt am 22. Juli 2024.
Zusätzlich zum laufenden Support und neuen Funktionen bietet die HTTP v1 API gegenüber den Legacy-APIs folgende Vorteile:
- Bessere Sicherheit durch Access Tokens. Die HTTP v1 API verwendet kurzlebige Access Tokens nach dem OAuth2-Sicherheitsmodell. Sollte ein Access Token öffentlich werden, kann er nur etwa eine Stunde lang missbraucht werden, bevor er abläuft. Refresh Tokens werden seltener übertragen als die Sicherheitsschlüssel der Legacy-API, sodass sie wesentlich weniger anfällig für Mitschnitte sind.
- Effizientere Anpassung von Nachrichten plattformübergreifend. Im Nachrichtenkörper hat die HTTP v1 API gemeinsame Schlüssel, die an alle Zielinstanzen gehen, sowie plattformspezifische Schlüssel, mit denen du die Nachricht pro Plattform anpassen kannst. So kannst du "Overrides" erstellen, die in einer einzigen Nachricht leicht unterschiedliche Payloads an verschiedene Client-Plattformen senden.
- Besser erweiterbar und zukunftssicher für neue Client-Plattformversionen. Die HTTP v1 API unterstützt vollständig die Messaging-Optionen, die auf Apple-Plattformen, Android und Web verfügbar sind. Da jede Plattform einen eigenen definierten Block im JSON-Payload hat, kann FCM die API bei Bedarf um neue Versionen und neue Plattformen erweitern.
Google FCM Delphi Client
Firebase Cloud Messaging (FCM) ist eine plattformübergreifende Messaging-Lösung, mit der du Nachrichten zuverlässig und kostenlos versenden kannst.
Mit FCM kannst du eine Client-App benachrichtigen, dass neue E-Mails oder andere Daten zur Synchronisation bereitstehen. Du kannst Benachrichtigungen senden, um Nutzer erneut zu binden. Für Anwendungsfälle wie Instant Messaging kann eine Nachricht einen Payload von bis zu 4096 Bytes an eine Client-App übertragen.
Die Komponente unterstützt die HTTP v1 API.
AutorisierungDer Google-FCM-Komponenten-Client kann sich mit folgenden Methoden bei den Google-Servern anmelden:
- gcaOAuth2: OAuth2-Protokoll
- gcaJWT: JWT-Tokens.
OAuth2
Die Anmeldung erfolgt über einen webbrowser, in dem sich der Nutzer mit seinem eigenen Konto anmeldet und die FCM-Anfragen autorisiert.
- GoogleCloudOptions.OAuth2.ClientId: ist die von Google bereitgestellte ClientID zur Authentifizierung über das OAuth2-Protokoll.
- GoogleCloudOptions.OAuth2.ClientSecret: ist der von Google bereitgestellte Client-Secret-String zur Authentifizierung über das OAuth2-Protokoll.
- GoogleCloudOptions.OAuth2.Scope: ist der Scope von OAuth2. In der Regel musst du den Standardwert nicht ändern, es sei denn, du benötigst mehr Zugriff als die Standardeinstellung.
- GoogleCloudOptions.OAuth2.LocalIP: Das OAuth2-Protokoll setzt voraus, dass ein Server auf die Antwort des Authentifizierungsservers wartet. Dies ist die IP oder der DNS. Standardwert ist 127.0.0.1.
- GoogleCloudOptions.OAuth2.LocalPort: Der Port des lokalen lauschenden Servers.
- GoogleCloudOptions.OAuth2.RedirectURL: Falls du eine Weiterleitungs-url setzen musst, die sich von LocalPort + LocalIP unterscheidet, kannst du das in dieser Eigenschaft tun (Beispiel: http://127.0.0.1:8080/oauth2).
Service Accounts
Die Anmeldung erfolgt durch Signieren der Anfragen mit einem von Google bereitgestellten privaten Schlüssel. Diese Methode wird für automatisierte Dienste oder Anwendungen ohne Nutzerinteraktion empfohlen.
- GoogleCloudOptions.JWT.ClientEmail: ist der Name der Client-Email, der beim Anlegen des neuen Service Accounts bereitgestellt wird. "client_email"-Knoten in der JSON-Konfigurationsdatei.
- GoogleCloudOptions.JWT.Subject: ist der Name der Client-Email, der beim Anlegen des neuen Service Accounts bereitgestellt wird. "client_email"-Knoten in der JSON-Konfigurationsdatei.
- GoogleCloudOptions.JWT.PrivateKeyId: ist die von Google bereitgestellte Private Key Id. "private_key_id"-Knoten in der JSON-Konfigurationsdatei.
- GoogleCloudOptions.JWT.PrivateKey: ist das von Google bereitgestellte Private-Key-Zertifikat. "private_key"-Knoten in der JSON-Konfigurationsdatei.
Wenn ein neuer Service Account angelegt wird, kannst du eine JSON-Datei mit allen Konfigurationen herunterladen. Diese Datei kann von der FCM-Komponente verarbeitet werden. Rufe einfach die Methode LoadSettingsFromFile auf und übergib den JSON-Dateinamen als Argument.
Beispiel
Im Folgenden findest du ein einfaches Beispiel zum Senden von Benachrichtigungen über FCM mit JWT als Authentifizierungsmethode.
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"}}}')
);
