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

Posted

技术标签:

【中文标题】为啥在 Web 推送库上使用推送通知服务?【英文标题】:Why use a push notification service over a Web Push library?为什么在 Web 推送库上使用推送通知服务? 【发布时间】:2018-08-26 08:40:21 【问题描述】:

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

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

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

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

【问题讨论】:

注意:我不确定 *** 是否是提出这个问题的最佳站点,如果您认为不是,版主请迁移到另一个站点。 【参考方案1】:

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。【参考方案2】:

对我个人而言,在进行自己的实施时最重要的一点是您可以控制一切。这意味着当 AWS 失去一个区域或定价发生变化并且您再也负担不起时,您的通知不会失败。没有任何提供商可以因为您分发的内容或用户的投诉而禁止您。您可以实现自己的逻辑以在前端显示通知,例如 stacking them 或拥有自己的分段规则(例如付费用户与免费层)。我什至不是在说custom subscription UI。您的消息中没有奇怪的版权。

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

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

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

希望能帮助您做出决定。

【讨论】:

我会更加强调供应商的依赖性,因为所有供应商都提供他们自己的系统,如果以及当您出于某种原因必须切换时,这将是非常痛苦的【参考方案3】:

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

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

阅读链接introduction to push notification 和lab code examples。稍后我将使用简单的工作代码进行更新,以进一步参考您的问题。

【讨论】:

【参考方案4】:

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

当事情发生变化时,服务会继续通知。所以对你来说应该是更少的维护。

【讨论】:

【参考方案5】:

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

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

另一种方法是构建一个 iOS 应用并发送原生推送通知。

【讨论】:

以上是关于为啥在 Web 推送库上使用推送通知服务?的主要内容,如果未能解决你的问题,请参考以下文章

为啥苹果推送通知服务有时会给我错误 500?

开发aps证书被吊销了,为啥还能推送通知?

使用交互式推送通知 iOS 8 调用 Web 服务

为啥首选使用 GCM 进行推送通知?

使用极光/友盟推送,APP进程杀死后为啥收不到推送

为啥我收到此警告“缺少推送通知权利”