首页 > 解决方案 > 用户退出后可以向用户发送推送通知吗?

问题描述

用户退出 PWA 后是否可以向用户发送推送通知?我知道服务器会收到消息,然后将其转发给服务人员,但它是否能够将消息推送给用户。我们正在尝试为我们的用户实现一个消息传递系统,但不想在意识到我们走错方向之前深入。

标签: service-workerprogressive-web-apps

解决方案


所以我实际上想通了这一点,希望我可以为那些对推送通知如何工作感到困惑的人提供一些清晰的信息。所以这就是这个过程的工作原理,这不是技术性的,而是它如何工作的理论,我也在使用一个 npm 包 web-push 来帮助实现它。在前端,您会提示用户是否愿意从您的站点接收推送通知。如果他们接受你,你基本上会为你的公共 Vapid 密钥的用户创建一个唯一的端点。公共 vapid 密钥由 web-push 包创建(我将链接有关如何执行此操作的教程)。因此,创建的端点是服务器如何知道将推送通知发送到哪里的方式。然后,您将该端点发送回您的服务器并将其保存在数据库中或您想要对其进行的任何操作。因此,现在如果您想向该用户发送推送通知,您可以使用 webpush 生成推送到他们的服务工作者并使用该唯一端点,以便服务器知道将其发送到哪里。服务器发送消息,Service Worker 将其拾取并将推送发送给用户。用户是否登录都没有关系,服务器发送到的端点是浏览器而不是用户帐户。我认为推送通知最让我困惑的是服务器如何知道将推送通知发送到哪里。我将举一个例子来帮助更好地说明,并希望使过程更清晰。如果我在我的计算机上使用 Google 浏览并单击允许来自站点的通知,那么将创建一个对我的计算机和该浏览器来说是唯一的端点。为简单起见,假设所有通知端点都存储在数据库中的一个数组中,所以现在我的新端点被推送到该数组并存储在数据库中。现在我关闭 google 打开 Firefox 并转到同一个站点。我现在允许使用 Firefox 通知同一站点。该端点被创建并推送到数据库中的该数组并保存在数据库中。现在,该站点的所有者想要向订阅推送通知的每个人发送通知。假设他遍历了他保存的端点数组中的每个端点,并向每个端点发送了一条消息。我会收到一份来自 Firefox 的通知和一份来自谷歌的通知。因此,推送通知再次被链接并发送到浏览器而不是用户。我认为如果您允许通知,那么推送通知将发送到您登录的任何地方,但不,它会发送到您允许推送通知的任何浏览器。我缺乏理解,但现在在我实施它们之后,它们的工作方式更加清晰


推荐阅读