Google FCM HTTP v1 Delphi

· Componenten

Vanaf sgcWebSockets 2024.9.0 is er een nieuw client-component om notificaties te versturen met Google Firebase Cloud Messaging en de nieuwste API HTTP v1.

Apps die de verouderde FCM legacy-API's voor HTTP en XMPP gebruiken, moeten zo snel mogelijk overstappen naar de HTTP v1-API. Het versturen van berichten (inclusief upstream-berichten) met die API's werd op 20 juni 2023 deprecated en de shutdown begint op 22 juli 2024.

Naast voortdurende ondersteuning en nieuwe functies heeft de HTTP v1-API deze voordelen ten opzichte van de legacy-API's:

- Betere beveiliging via access-tokens. De HTTP v1-API gebruikt kortlevende access-tokens volgens het OAuth2-beveiligingsmodel. Mocht een access-token publiek worden, dan kan deze slechts ongeveer een uur kwaadaardig worden gebruikt voordat hij verloopt. Refresh-tokens worden minder vaak verstuurd dan de beveiligingssleutels die in de legacy-API werden gebruikt, dus de kans dat ze worden onderschept is veel kleiner.

- Efficiëntere maatwerk-berichten over platforms heen. Voor de berichtinhoud heeft de HTTP v1-API gemeenschappelijke sleutels die naar alle target-instances gaan, plus platformspecifieke sleutels waarmee je het bericht per platform kunt aanpassen. Hiermee kun je "overrides" creëren die in één bericht licht afwijkende payloads naar verschillende client-platforms sturen.

- Uitbreidbaar en toekomstbestendig voor nieuwe versies van client-platforms. De HTTP v1-API ondersteunt volledig de messaging-opties die beschikbaar zijn op Apple-platforms, Android en het web. Omdat elk platform zijn eigen gedefinieerde blok in de JSON-payload heeft, kan FCM de API naar behoefte uitbreiden naar nieuwe versies en nieuwe platforms.

Google FCM Delphi-client

Firebase Cloud Messaging (FCM) is een cross-platform messaging-oplossing waarmee je betrouwbaar en kosteloos berichten kunt versturen.

Met FCM kun je een client-app een melding geven dat er nieuwe e-mail of andere data beschikbaar is om te synchroniseren. Je kunt notificatieberichten versturen om gebruikers opnieuw te betrekken en te behouden. Voor use cases zoals instant messaging kan een bericht een payload van tot 4096 bytes naar een client-app overdragen.

Het component ondersteunt de HTTP v1-API.

Autorisatie

Het Google FCM-client-component kan inloggen op Google-servers met de volgende methoden:

OAuth2

De login wordt uitgevoerd via een webbrowser, waar de gebruiker inlogt met zijn eigen gebruiker en de FCM-requests autoriseert.


Service-accounts

De login wordt uitgevoerd door de requests te ondertekenen met een private key die door Google wordt verstrekt; deze methode wordt aanbevolen voor geautomatiseerde diensten of toepassingen zonder gebruikersinteractie.

Wanneer er een nieuw service-account wordt aangemaakt, kun je een JSON-bestand met alle configuraties downloaden. Dit bestand kan door het FCM-component worden verwerkt; roep de methode LoadSettingsFromFile aan en geef de JSON-bestandsnaam als argument mee. 

Voorbeeld

Hieronder een eenvoudig voorbeeld om notificaties te versturen met FCM en JWT als authenticatiemethode.

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"}}}')
);