Google FCM HTTP v1 Delphi

· 组件

sgcWebSockets 2024.9.0 起,新增客户端组件,支持使用 Google Firebase Cloud Messaging 和最新的 HTTP v1 API 发送通知

使用已弃用的 FCM 旧版 HTTP 和 XMPP API 的应用应尽早迁移至 HTTP v1 API。这些 API 的消息发送(包括上行消息)功能已于 2023年6月20日弃用,并于 2024年7月22日起停止服务。

除持续支持和新功能外,HTTP v1 API 相比旧版 API 具有以下优势:

- 通过访问令牌提升安全性:HTTP v1 API 依据 OAuth2 安全模型使用短期访问令牌。即使访问令牌泄露,也只能在大约一小时内被恶意使用,然后便会过期。刷新令牌的传输频率远低于旧版 API 中使用的安全密钥,因此被截获的可能性大大降低。

- 跨平台消息定制更高效:对于消息正文,HTTP v1 API 提供发送给所有目标实例的公共键,以及允许您跨平台定制消息的平台专属键。这使您能够创建"覆盖",在单条消息中向不同客户端平台发送略有不同的载荷。

- 对新客户端平台版本具备更强扩展性和前瞻性:HTTP v1 API 完整支持 Apple 平台、Android 和 Web 上可用的消息选项。由于每个平台在 JSON 载荷中都有其自定义块,FCM 可按需将 API 扩展至新版本和新平台。

Google FCM Delphi 客户端

Firebase Cloud Messaging(FCM)是一种跨平台消息解决方案,可让您免费可靠地发送消息。

使用 FCM,您可以通知客户端应用有新邮件或其他数据可供同步,也可以发送通知消息以促进用户重新参与和留存。对于即时通讯等场景,消息最多可向客户端应用传输 4096 字节的载荷。

该组件支持 HTTP v1 API。

授权

Google FCM 客户端组件可通过以下方式登录 Google 服务器:

OAuth2

通过 Web 浏览器完成登录,用户以自己的账户登录并授权 FCM 请求。


服务账户

使用 Google 提供的私钥对请求进行签名完成登录,此方式推荐用于无需用户交互的自动化服务或应用程序。

创建新服务账户后,您可以下载包含所有配置的 JSON 文件。FCM 组件可处理此文件,只需调用方法 LoadSettingsFromFile 并将 JSON 文件名作为参数传入即可。

示例

以下是使用 FCM 和 JWT 身份验证方式发送通知的简单示例。

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