Da sgcWebSockets 2024.9.0 è disponibile un nuovo componente client per inviare notifiche usando Google Firebase Cloud Messaging e la più recente API HTTP v1.
Le app che usano le API FCM legacy deprecate per HTTP e XMPP dovrebbero migrare all'API HTTP v1 il prima possibile. L'invio di messaggi (compresi i messaggi upstream) con quelle API è stato deprecato il 20 giugno 2023, e lo shutdown inizia il 22 luglio 2024.
Oltre al supporto continuo e alle nuove funzionalità, l'API HTTP v1 presenta questi vantaggi rispetto alle API legacy:
- Sicurezza migliorata tramite token di accesso. L'API HTTP v1 usa token di accesso a breve durata secondo il modello di sicurezza OAuth2. Se un token di accesso diventasse pubblico, potrebbe essere usato in modo malevolo solo per un'ora o giù di lì prima di scadere. I refresh token non vengono trasmessi tanto spesso quanto le chiavi di sicurezza usate nell'API legacy, quindi è molto meno probabile che vengano intercettati.
- Personalizzazione più efficiente dei messaggi tra piattaforme. Per il corpo del messaggio, l'API HTTP v1 dispone di chiavi comuni che vanno a tutte le istanze destinatarie, oltre a chiavi specifiche per piattaforma che ti permettono di personalizzare il messaggio tra piattaforme. Questo ti consente di creare "override" che inviano payload leggermente diversi a diverse piattaforme client in un unico messaggio.
- Maggiore estensibilità e a prova di futuro per le nuove versioni delle piattaforme client. L'API HTTP v1 supporta pienamente le opzioni di messaggistica disponibili sulle piattaforme Apple, Android e Web. Poiché ogni piattaforma ha il proprio blocco definito nel payload JSON, FCM può estendere l'API a nuove versioni e nuove piattaforme secondo necessità.
Client Google FCM Delphi
Firebase Cloud Messaging (FCM) è una soluzione di messaggistica multipiattaforma che ti permette di inviare messaggi in modo affidabile e gratuito.
Usando FCM, puoi notificare a un'app client che è disponibile una nuova e-mail o altri dati da sincronizzare. Puoi inviare messaggi di notifica per favorire il riavvicinamento e la fidelizzazione degli utenti. Per casi d'uso come la messaggistica istantanea, un messaggio può trasferire un payload fino a 4096 byte a un'app client.
Il componente supporta l'API HTTP v1.
AutorizzazioneIl componente client Google FCM può effettuare il login ai server Google usando i seguenti metodi:
- gcaOAuth2: protocollo OAuth2
- gcaJWT: token JWT.
OAuth2
Il login viene effettuato usando un webbrowser in cui l'utente accede con il proprio utente e autorizza le richieste FCM.
- GoogleCloudOptions.OAuth2.ClientId: è il ClientID fornito da Google per autenticarsi tramite il protocollo OAuth2.
- GoogleCloudOptions.OAuth2.ClientSecret: è la stringa Client Secret fornita da Google per autenticarsi tramite il protocollo OAuth2.
- GoogleCloudOptions.OAuth2.Scope: è lo scope di OAuth2, di solito non occorre modificare il valore predefinito a meno che tu non abbia bisogno di un accesso maggiore di quello predefinito.
- GoogleCloudOptions.OAuth2.LocalIP: il protocollo OAuth2 richiede un server in ascolto della risposta dal server di autenticazione, questo è l'IP o il DNS. Per impostazione predefinita è 127.0.0.1.
- GoogleCloudOptions.OAuth2.LocalPort: porta di ascolto del server locale.
- GoogleCloudOptions.OAuth2.RedirectURL: se devi impostare un url di reindirizzamento diverso da LocalPort + LocalIP, puoi impostarlo in questa proprietà (esempio: http://127.0.0.1:8080/oauth2).
Service Account
Il login viene effettuato firmando le richieste con una chiave privata fornita da Google, questo metodo è consigliato per servizi automatizzati o applicazioni senza interazione utente.
- GoogleCloudOptions.JWT.ClientEmail: è il nome Client Email fornito al momento della creazione del nuovo service account. Nodo "client_email" nel file di configurazione JSON.
- GoogleCloudOptions.JWT.Subject: è il nome Client Email fornito al momento della creazione del nuovo service account. Nodo "client_email" nel file di configurazione JSON.
- GoogleCloudOptions.JWT.PrivateKeyId: è il Private Key Id fornito da Google. Nodo "private_key_id" nel file di configurazione JSON.
- GoogleCloudOptions.JWT.PrivateKey: è il certificato di chiave privata fornito da Google. Nodo "private_key" nel file di configurazione JSON.
Quando viene creato un nuovo service account, puoi scaricare un file JSON con tutte le configurazioni. Questo file può essere elaborato dal componente FCM, basta chiamare il metodo LoadSettingsFromFile e passare il nome del file JSON come argomento.
Esempio
Di seguito trovi un semplice esempio per inviare notifiche usando FCM e JWT come metodo di autenticazione.
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"}}}')
);
