Desde sgcWebSockets 2024.9.0 hay un nuevo componente cliente para enviar notificaciones usando Google Firebase Cloud Messaging y la última API HTTP v1.
Las apps que usan las APIs heredadas FCM para HTTP y XMPP deben migrar a la API HTTP v1 lo antes posible. El envío de mensajes (incluidos los mensajes upstream) con esas APIs quedó obsoleto el 20 de junio de 2023, y el cierre comienza el 22 de julio de 2024.
Además del soporte continuo y las nuevas características, la API HTTP v1 tiene estas ventajas sobre las APIs heredadas:
- Mejor seguridad mediante tokens de acceso. La API HTTP v1 utiliza tokens de acceso de corta duración según el modelo de seguridad OAuth2. En caso de que un token de acceso se haga público, solo puede ser usado maliciosamente durante una hora aproximadamente antes de que caduque. Los tokens de refresco no se transmiten con tanta frecuencia como las claves de seguridad usadas en la API heredada, por lo que es mucho menos probable que sean capturados.
- Personalización más eficiente de los mensajes entre plataformas. Para el cuerpo del mensaje, la API HTTP v1 tiene claves comunes que van a todas las instancias destino, además de claves específicas de plataforma que te permiten personalizar el mensaje entre plataformas. Esto te permite crear "overrides" que envían payloads ligeramente diferentes a distintas plataformas cliente en un único mensaje.
- Más extensible y preparado para nuevas versiones de plataformas cliente. La API HTTP v1 admite por completo las opciones de mensajería disponibles en las plataformas Apple, Android y Web. Como cada plataforma tiene su propio bloque definido en el payload JSON, FCM puede extender la API a nuevas versiones y nuevas plataformas según sea necesario.
Google FCM Delphi Cliente
Firebase Cloud Messaging (FCM) es una solución de mensajería multiplataforma que te permite enviar mensajes de forma fiable sin coste alguno.
Usando FCM, puedes notificar a una app cliente que hay un nuevo correo u otros datos disponibles para sincronizar. Puedes enviar mensajes de notificación para impulsar la re-engagement y la retención del usuario. Para casos de uso como mensajería instantánea, un mensaje puede transferir un payload de hasta 4096 bytes a una app cliente.
El componente admite la API HTTP v1.
AutorizaciónEl cliente del componente Google FCM puede iniciar sesión en los servidores de Google usando los siguientes métodos:
- gcaOAuth2: protocolo OAuth2
- gcaJWT: tokens JWT.
OAuth2
El inicio de sesión se realiza usando un webbrowser donde el usuario inicia sesión con su propio usuario y autoriza las solicitudes FCM.
- GoogleCloudOptions.OAuth2.ClientId: es el ClientID proporcionado por Google para autenticarse mediante el protocolo OAuth2.
- GoogleCloudOptions.OAuth2.ClientSecret: es la cadena Client Secret proporcionada por Google para autenticarse mediante el protocolo OAuth2.
- GoogleCloudOptions.OAuth2.Scope: es el scope de OAuth2; normalmente no hay necesidad de modificar el valor predeterminado a menos que necesites más acceso del predeterminado.
- GoogleCloudOptions.OAuth2.LocalIP: el protocolo OAuth2 requiere un servidor escuchando la respuesta del servidor de autenticación; esta es la IP o DNS. Por defecto es 127.0.0.1.
- GoogleCloudOptions.OAuth2.LocalPort: puerto de escucha del servidor local.
- GoogleCloudOptions.OAuth2.RedirectURL: si necesitas establecer una url de redirección diferente de LocalPort + LocalIP, puedes configurarla en esta propiedad (ejemplo: http://127.0.0.1:8080/oauth2).
Cuentas de Servicio
El inicio de sesión se realiza firmando las solicitudes usando una clave privada proporcionada por Google; este método se recomienda para servicios automatizados o aplicaciones sin interacción del usuario.
- GoogleCloudOptions.JWT.ClientEmail: es el nombre de Client Email proporcionado al crear la nueva cuenta de servicio. Nodo "client_email" en el archivo de configuración JSON.
- GoogleCloudOptions.JWT.Subject: es el nombre de Client Email proporcionado al crear la nueva cuenta de servicio. Nodo "client_email" en el archivo de configuración JSON.
- GoogleCloudOptions.JWT.PrivateKeyId: es el Private Key Id proporcionado por Google. Nodo "private_key_id" en el archivo de configuración JSON.
- GoogleCloudOptions.JWT.PrivateKey: es el certificado Private Key proporcionado por Google. Nodo "private_key" en el archivo de configuración JSON.
Cuando se crea una nueva cuenta de servicio, puedes descargar un archivo JSON con todas las configuraciones. Este archivo puede ser procesado por el componente FCM; basta con llamar al método LoadSettingsFromFile y pasar el nombre del archivo JSON como argumento.
Ejemplo
A continuación encontrarás un ejemplo simple para enviar notificaciones usando FCM y JWT como método de autenticación.
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"}}}')
);
