为什么使用推送通知服务而不是Web Push库?

3

我计划为我的网络应用添加推送通知功能。

据我所知,要向我的用户发送推送通知,我可以使用Web Push库直接传递通知,或者使用类似OneSignal、Firebase Cloud Messaging或Batch.com这样的推送通知服务。

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

如果我现在只关注Web Push通知,那么是否应该知道使用这些服务直接使用Web Push库的任何优势呢?


注意:我不确定StackOverflow是否是提出这个问题的最佳网站,请管理员如果您认为不是,请将其迁移至其他网站。 - BenMorel
作为推送服务(Pushpad)的创始人,我可以说Web Push库并不等同于推送服务:它只是其中的一小部分。您需要实现客户端代码(JS + Service worker),测试浏览器,实现定位(例如分段)和接收者身份验证,构建小部件或UI,分析,构建仪表板,扩展和管理基础架构(在几分钟内向数百万接收者发送大量通知并不容易),实现定时通知等等。 - collimarco
5个回答

5

Web Push是一项仍处于开发中且可能会有变更的标准。目前浏览器支持非常有限(请参见https://caniuse.com/#feat=push-api)。

优点是:您只需要一个API来管理所有支持的平台(包括桌面)。缺点是:您必须意识到并非所有平台都支持此标准。

使用通知SaaS解决方案来处理通知,可以让您处理所有平台。从后端发送通知将成为对通知SaaS服务的单个调用,但是您仍然需要注意,在Android、iOS和浏览器上希望具有原生通知的情况下,您将不得不在客户端应用程序中以不同方式处理这些平台的集成(请参见此处的示例,在Android应用程序中使用Google Cloud Message集成:https://firebase.google.com/docs/cloud-messaging/android/client)。

因此,您的决策应基于要支持的平台。 - 如果您可以通过支持非iOS设备上的Chrome、Firefox和Edge浏览器(或以不同方式处理iOS通知)来完成,则可以使用Web Push。 - 否则,我建议选择通知SaaS解决方案。


我正在授予悬赏并接受你的答案,因为你最好地解释了这两种方法之间的差异。感谢大家的参与,点赞+1。 - BenMorel

3
我个人在进行自己的实现时最重要的一点是您掌控一切。这意味着当AWS失去一个区域或定价变化并且您无法负担时,您的通知不会失败。任何供应商都不能因为您分发的内容或用户的投诉而禁止您。您可以为前端实现自己的逻辑来显示通知,例如合并它们或者拥有自己的细分规则(例如付费用户与免费级别)。我甚至没有提到自定义订阅UI。您的消息中也没有奇怪的版权问题。

据我所了解,这些服务不仅提供Web Push通知,还提供iOS和Android应用程序的通知一站式解决方案。

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

最后但同样重要的是——这样开发很有趣。我猜这更多是个人喜好的问题,但我喜欢学习新事物 :)

希望这能帮助您做出决定。


我想强调一下供应商依赖性的问题,因为所有的供应商都提供自己的系统,如果你不得不因某些原因进行切换,那将会非常痛苦。 - Zia Ul Rehman Mughal

3

你可以在不使用第三方库的情况下,将推送通知实现到你的网站。你需要从客户端获取订阅令牌并将此订阅令牌存储到服务器上(数据库中)。当你想向用户发送推送通知时,只需调用终端节点(终端节点在订阅令牌中指定)。就这样。

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

阅读链接推送通知介绍和相同的示例代码。稍后我将更新一个简单的工作代码,供你参考。


1
取决于你想要什么。在Web-Push上无法使用iOS Safari。如果要向iOS发送通知,您必须使用服务或构建自己的应用程序。 我使用Pushover来从脚本和软件中接收通知。这可能是一个解决方案,也可能不是,这取决于您有多少用户、您发送了多少通知以及您的用户愿意使用像Pushover(或iOS上的应用)这样的Web应用程序。 服务将保持通知,当事情变化时。因此,这对您的维护应该会更少。

0

如果你想要针对iOS访客,那么很遗憾,这是不可能的,因为iOS不支持网页推送通知。

为了绕过这个问题,你需要使用第三方服务,比如Wise Notifications

另一种选择是构建一个iOS应用程序并发送本地推送通知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接