Od sgcWebSockets 2024.9.0 dostępny jest nowy komponent klienta do wysyłania powiadomień przy użyciu Google Firebase Cloud Messaging i najnowszego API HTTP v1.
Aplikacje korzystające ze starszych (przestarzałych) interfejsów API FCM dla HTTP i XMPP powinny jak najszybciej przejść na API HTTP v1. Wysyłanie wiadomości (w tym wiadomości upstream) za pomocą tych interfejsów zostało uznane za przestarzałe 20 czerwca 2023 r., a wyłączenie rozpoczęło się 22 lipca 2024 r.
Poza bieżącym wsparciem i nowymi funkcjami, API HTTP v1 oferuje następujące zalety w porównaniu ze starszymi interfejsami:
- Lepsza ochrona dzięki tokenem dostępu — API HTTP v1 używa krótkotrwałych tokenów dostępu zgodnie z modelem bezpieczeństwa OAuth2. Nawet jeśli token dostępu wycieknie, może być użyty złośliwie tylko przez około godzinę przed wygaśnięciem. Tokeny odświeżania są przesyłane rzadziej niż klucze bezpieczeństwa w starszym API, co zmniejsza ryzyko ich przechwycenia.
- Wydajniejsza personalizacja wiadomości na różnych platformach — API HTTP v1 posiada klucze wspólne dla wszystkich docelowych instancji oraz klucze specyficzne dla platform, umożliwiające dostosowanie wiadomości. Pozwala to tworzyć "nadpisania" wysyłające nieco inne ładunki do różnych platform klienckich w ramach jednej wiadomości.
- Większa rozszerzalność i gotowość na przyszłe wersje platform klienckich — API HTTP v1 w pełni obsługuje opcje przesyłania wiadomości dostępne na platformach Apple, Android i Web. Ponieważ każda platforma ma własny blok w ładunku JSON, FCM może rozszerzać API o nowe wersje i platformy wedle potrzeb.
Google FCM Delphi Client
Firebase Cloud Messaging (FCM) to wieloplatformowe rozwiązanie do przesyłania wiadomości, umożliwiające niezawodne wysyłanie wiadomości bez kosztów.
Za pomocą FCM możesz powiadamiać aplikację klienta o dostępności nowych wiadomości e-mail lub innych danych do synchronizacji. Możesz wysyłać wiadomości powiadomień, aby ponownie angażować użytkowników i zwiększać retencję. W przypadkach takich jak komunikatory, wiadomość może przesłać ładunek do 4096 bajtów do aplikacji klienckiej.
Komponent obsługuje API HTTP v1.
AutoryzacjaKomponent klienta Google FCM może logować się na serwery Google następującymi metodami:
- gcaOAuth2: OAuth2 protocol
- gcaJWT: JWT tokens.
OAuth2
Logowanie odbywa się przez przeglądarkę internetową, w której użytkownik loguje się na swoje konto i autoryzuje żądania FCM.
- GoogleCloudOptions.OAuth2.ClientId: identyfikator klienta (ClientID) dostarczony przez Google do uwierzytelniania przez OAuth2.
- GoogleCloudOptions.OAuth2.ClientSecret: ciąg Client Secret dostarczony przez Google do uwierzytelniania przez OAuth2.
- GoogleCloudOptions.OAuth2.Scope: zakres OAuth2; zazwyczaj nie trzeba zmieniać wartości domyślnej, chyba że potrzebujesz szerszego dostępu.
- GoogleCloudOptions.OAuth2.LocalIP: OAuth2 wymaga lokalnego serwera nasłuchującego na odpowiedź serwera uwierzytelniania; podaj tu adres IP lub DNS. Domyślnie: 127.0.0.1.
- GoogleCloudOptions.OAuth2.LocalPort: port lokalnego serwera nasłuchującego.
- GoogleCloudOptions.OAuth2.RedirectURL: jeśli chcesz ustawić adres URL przekierowania inny niż LocalPort + LocalIP, możesz go podać w tej właściwości (przykład: http://127.0.0.1:8080/oauth2).
Konta usług
Logowanie odbywa się przez podpisywanie żądań kluczem prywatnym dostarczonym przez Google. Ta metoda jest zalecana dla zautomatyzowanych usług lub aplikacji bez interakcji użytkownika.
- GoogleCloudOptions.JWT.ClientEmail: adres e-mail klienta podany podczas tworzenia nowego konta usług. Węzeł "client_email" w pliku konfiguracyjnym JSON.
- GoogleCloudOptions.JWT.Subject: adres e-mail klienta podany podczas tworzenia nowego konta usług. Węzeł "client_email" w pliku konfiguracyjnym JSON.
- GoogleCloudOptions.JWT.PrivateKeyId: identyfikator klucza prywatnego dostarczony przez Google. Węzeł "private_key_id" w pliku konfiguracyjnym JSON.
- GoogleCloudOptions.JWT.PrivateKey: certyfikat klucza prywatnego dostarczony przez Google. Węzeł "private_key" w pliku konfiguracyjnym JSON.
Po utworzeniu nowego konta usług możesz pobrać plik JSON ze wszystkimi konfiguracjami. Plik ten może być przetworzony przez komponent FCM — wystarczy wywołać metodę LoadSettingsFromFile i przekazać nazwę pliku JSON jako argument.
Sample
Poniżej znajdziesz prosty przykład wysyłania powiadomień przy użyciu FCM z JWT jako metodą uwierzytelniania.
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"}}}')
);
