为什么订阅 "Web Push" 会为您提供 Firebase FCM 端点?我什至没有付过 Firebase 任何钱

Why would subscribing to "Web Push" provide you a Firebase FCM endpoint? I haven't even paid Firebase any money

如果我使用 VAPID public 密钥订阅网络推送,它将如下所示:

navigator.serviceWorker.register('/service-worker.js').then((sw) => {
  sw.pushManager
    .subscribe({
      userVisibleOnly: true,
      applicationServerKey: urlB64ToUint8Array(vapidPublicKey),
    })
    .then((subscription) => {
      console.log(subscription); // This will log fcm endpoint!
    });
});

然后我会取回这个负载。

{
  "endpoint": "https://fcm.googleapis.com/fcm/send/...", // confusing part
  "expirationTime": null,
  "keys": {
    "p256dh": "...",
    "auth": "..."
  }
}

为什么端点是fcm?

更让我困惑的是,我可以在我的后端代码中开始为这个订阅对象发送推送通知,而且它会起作用!

我没有创建任何 firebase 帐户或项目,也没有向 firebase 支付任何费用。

这是什么原因造成的?

我可以在生产环境中使用网络推送而无需支付 Firebase 费用吗?

The Push API / Web Push 是一种浏览器标准。这就是为什么。

Google Chrome 使用 Firebase 在后台实现推送 API,但您无需处理专有的 Firebase 功能即可使用推送 API.

每个浏览器使用不同的服务,但 Push API 为网络开发人员提供了一个标准接口。