为什么在 Web 推送库上使用推送通知服务?

Why use a push notification service over a Web Push library?

我打算将推送通知添加到我的网络应用程序。

据我所知,要向我的用户推送通知,我可以使用 web push library 并直接发送通知,或者使用 OneSignal、Firebase Cloud Messaging 等推送通知服务,或者Batch.com.

据我了解,这些服务提供一站式解决方案,不仅可以通过 Web 推送方式发送通知,还可以向 iOS 和 Android 应用程序发送通知。

如果我现在只关注 Web 推送,我应该知道直接使用这些服务之一而不是 Web 推送库有什么优势吗?

对我个人而言,当您自己实施时,最重要的一点是您可以控制一切。这意味着您的通知不会在 AWS 失去区域或价格变化而您无法再承受时失败。没有任何供应商可以因为您分发的内容或用户的投诉而禁止您。您可以实现自己的逻辑来在前端显示通知,例如 stacking them or having your own segmentation rules (paying users versus free tier, for instance). I'm not even speaking of the custom subscription UI。您的消息中没有奇怪的版权。

From what I understand, these services offer a one-stop solution to deliver notifications not only as Web Push, but also to iOS and Android apps.

当您拥有处理应用程序事件和发送通知的服务器逻辑时,扩展它与移动推送通知一起工作应该并不难。唯一改变的是您订阅设备的方式。

最后但并非最不重要的一点 - 开发很有趣。我想这更多是个人问题,但我喜欢学习新事物:)

希望对您的决定有所帮助。

这取决于你想要什么。无法使用 iOS Safari 进行 Web 推送。要向 iOS 发送通知,您必须使用服务或构建自己的应用程序。 我使用 Pushover 从脚本和软件通知自己。这可能是也可能不是解决方案,具体取决于您拥有多少用户、您发送了多少通知以及您的用户使用 Pushover 等网络应用程序(或 iOS 上的应用程序)的意愿如何。

一项服务会在事情发生变化时保持通知。所以对你来说应该是少维护。

您可以在不使用第三方库的情况下向您的网站实施推送通知。您需要从客户端获取订阅令牌并将此订阅令牌存储到服务器(内部数据库)。在您想要向用户发送推送通知之后,您只需调用端点(订阅令牌中提到了端点)。就是这样。

由于安全风险和管理订阅令牌,开发人员更喜欢使用 firebase、AWS 推送通知或 onesignal.com 服务。这些服务是可选的,您根本不需要。

阅读链接introduction to push notification and also the same lab code examples。稍后我将更新简单的工作代码以进一步参考您的问题。

Web Push 是一个仍在开发中并可能发生变化的标准。此外,目前浏览器支持非常有限(请参阅 https://caniuse.com/#feat=push-api)。

好处是:一个API统治所有支持平台(包括桌面)。 缺点是:您必须知道并非所有平台都支持该标准。

使用通知 SaaS 解决方案来处理通知使您能够处理所有平台。从后端发送通知将是对通知 SaaS 服务的一次调用,但您仍然需要注意,当您希望在 Android、iOS 和浏览器上获得本机通知时,您将不得不在您的客户端应用程序中以不同方式处理这些平台的集成(参见此处示例,在 Android 应用程序中使用 Google 云消息集成:https://firebase.google.com/docs/cloud-messaging/android/client)。

所以您的决定应该基于您必须支持的平台。 - 如果您在非 iOS 设备上支持 Chrome、Firefox 和 Edge 浏览器(或以不同方式处理 iOS 通知),则可以使用网络推送。 - 否则我会选择通知 SaaS 解决方案。

如果您还想定位 iOS 位访问者,这是不可能的,因为 iOS 不支持网络推送通知。

要避免这种情况,您需要使用像 Wise Notifications 这样的第三方服务。

另一种方法是构建一个 iOS 应用程序并发送本机推送通知。