You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无用户密钥时,如何向https://android.googleapis.com/gcm/send发送推送消息?

关于GCM端点无密钥推送的解决方案

首先明确说:你完全可以向GCM的https://android.googleapis.com/gcm/send端点推送通知,不需要客户端返回密钥——因为密钥本来就不是由客户端提供的,这里可能存在一个认知误区,我来详细解释:

核心认知纠正

不管是GCM还是FCM的推送端点,用于鉴权的服务器密钥(Server Key)是你自己在Firebase/Google Cloud控制台中获取的,客户端返回的只是包含设备注册ID(Registration ID)的端点URL,密钥不需要从客户端获取。旧的GCM端点和新的FCM端点使用的是同一个服务器密钥,所以你可以直接用现有的FCM服务器密钥来向GCM端点发送请求。

具体操作步骤

  1. 提取注册ID:从GCM端点URL中提取出设备的注册ID,比如如果客户端返回的端点是https://android.googleapis.com/gcm/send/abcdef123456,那么注册ID就是abcdef123456。
  2. 构造推送请求:使用你的FCM服务器密钥,向GCM端点发送POST请求,请求格式和FCM的类似,示例如下:
POST https://android.googleapis.com/gcm/send
Content-Type: application/json
Authorization: key=YOUR_FCM_SERVER_KEY

{
  "to": "abcdef123456",
  "notification": {
    "title": "你的通知标题",
    "body": "你的通知内容"
  }
}
  1. 验证请求合法性:确保请求头中的Authorization格式正确(key=你的服务器密钥),并且请求体的JSON格式符合GCM/FCM的规范。

为什么会出现GCM端点的情况

你提到的这些用户代理对应的都是旧版本的Chrome(Chrome 49是2016年的版本)和旧Android系统(4.4.4、6.0.1),这些环境中的Web推送实现还在使用GCM的旧端点,而新版本的Chrome和Android系统已经默认切换到FCM端点。

额外建议

  • 优先迁移到FCM:谷歌已经弃用了GCM服务,虽然目前GCM端点还能工作,但未来可能会停止支持,建议引导用户更新Chrome浏览器和Google Play服务,这样后续注册会自动使用FCM端点。
  • 统一处理端点逻辑:在你的推送服务中,可以判断客户端返回的端点是GCM还是FCM类型,自动适配对应的请求端点,不需要额外配置新的密钥。

内容的提问来源于stack exchange,提问作者manuelgos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:40:14