Web 推送:从 GCM 迁移到 FCM

Web Push : Migrating from GCM to FCM

我正在升级使用 Chrome 和 Firefox 的 Wen 推送通知的网站。过去 2 年一直是 运行。它拥有近 2-3 百万订阅者。但是现在,它的服务器很慢,这就是为什么我将网络推送通知部分迁移到 AWS lambda 以随着订阅者的增加提供可扩展的解决方案。

注意 :: 它使用 pywebpush 库来发送推送消息。

由于项目构建的时间很早,它使用GCM Keys而不是Firebase Keys。在迁移期间,我发现非常奇怪的事情是,在主服务器上运行良好的相同 GCM 密钥在 aws lambda 上却不起作用。我收到 401 - Legacy Server Key 错误。 Mozilla web push are working great

我阅读了 GCM documentation 并发现 GCM 已被弃用。而在 2019 年 4 月之后,它将不再起作用。另外,我看不到任何 GCM 控制台。我转到 firebase 控制台并创建了一个新项目并尝试使用新 fcm_key 发送推送通知,这次它以 200 and MisMatchSenderId 响应,这是有道理的,因为此订阅信息取自 google api 使用 gcm sender id。现在我有以下问题,如果有人知道答案请告诉我。

  1. 如何将当前的 GCM project 迁移到 FCM project,以便我的 gcm sender id 保持不变?我可以吗?

  2. 近 2-3 百万订阅者使用旧 GCM sender id 订阅,如果我不能迁移,那么解决方案是什么。我会失去所有订阅者,还是需要为每个用户重新订阅并获取新的订阅信息?

  3. 如果我需要为每个浏览器重新订阅,它会再次要求允许和阻止权限吗?

您的帮助将不胜感激!!

  1. 只需将您的项目导入 Firebase 控制台。 GCM 发件人 ID 实际上与项目的 ID 相同——是唯一且永久的。将您的项目导入 Firebase 不会改变它。

  2. 导入 GCM 项目并迁移服务器后,令牌关系(即主题订阅、设备组、一般的注册令牌)应该仍然可用。参见 and

不幸的是,我的知识不足以对第 3 项发表评论。但据我从移动端的情况来看,它使用的是相同的权限。

  1. 按照此处的步骤操作 https://developers.google.com/cloud-messaging/android/android-migrate-fcm。发件人 ID 将保持不变。

  2. 您不会失去任何订阅者,也不需要重新订阅。

  3. 您无需重新订阅。不会向已经阻止或允许的用户显示 "block or allow" 提示。