Android 版 Chrome 上的网络推送通知:我需要 GCM 或 SNS 等第三方服务吗?

Mon*_*nja 12 google-chrome web-push

我想使用 Service Workers 在我的渐进式 Web 应用程序(PWA) 上设置 Web 推送通知。但我无法理解 Google Cloud Messaging 和 Amazon SNS 等第三方服务的作用,以及我是否需要它们。

据我了解,当用户单击“允许通知”按钮时,您将获得一个唯一的订阅端点。然后在后端,您可以使用此端点向该特定用户发送通知。

然而,我发现的所有后端库(例如Node.js 的pywebpushweb-push)都提到您需要 GCM API 密钥才能发送通知。

但MDN Push API 文档是这样说的:

早于 52 的 Chrome 版本要求您在 Google Cloud Messaging 上设置一个项目来发送推送消息 [...]

所以我假设新版本的 Chrome(今天的版本 58)应该能够在没有第三方帮助的情况下显示通知。

这是我想要实现的目标的示例。我只是不确定他们在后端做什么。

注意:我并不是尝试将本机推送通知发送到 Android 或 iOS 设备,而只是使用 Web Push API 发送到 Chrome 上的渐进式 Web 应用程序。

col*_*rco 7

浏览器推送服务

正如我在另一个答案中解释的那样,为了发送网络推送通知,您需要与浏览器推送服务进行交互。基本上,当用户允许推送通知时,每个浏览器都会返回一个特定于其自己的推送服务的端点 (URL)。

例如:

  • Chrome 和 Opera 端点以 prefix 开头https://fcm.googleapis.com/,因为它们使用FCM(前 GCM)
  • Firefox 端点以 prefix 开头https://updates.push.services.mozilla.com/,因为 Firefox 使用Mozilla autopush

因此通知将始终通过 FCM 和 autopush 传递,别无选择:推送服务是硬编码在浏览器内部的

作为抽象层的 Web 推送通知服务

还有另一种网络推送服务。他们的目标是在浏览器推送服务上提供一个抽象层和附加功能。例如Pushpad就是其中之一(我是创始人)。

您的 Web 应用程序可以只与一个推送服务(例如 Pushpad)交互,而不是直接与不同的浏览器推送服务(例如 FCM、autopush)交互,然后该服务会为您与浏览器推送服务交互(自动执行许多任务,例如 VAPID 和提供额外的功能,如监控和集成)。

关于FCM的困惑

FCM 相当令人困惑,因为它既充当 Chrome 和 Opera 的“浏览器推送服务”,又充当其他浏览器的通用“网络推送通知服务”。例如,对于 Firefox,FCM 充当 Mozilla 自动推送的代理。