Aar*_*gle 5 service-worker progressive-web-apps
用户退出 PWA 后是否可以向用户发送推送通知?我知道服务器会收到消息,然后将其转发给服务工作者,但它是否能够将消息推送给用户。我们正在尝试为用户实现一个消息传递系统,但在意识到我们走错了方向之前不想深入研究。
所以我实际上已经弄清楚了这一点,希望我能为那些对推送通知的工作原理感到困惑的人提供一些澄清。下面是这个过程的工作原理,这不是技术性的,而是它如何工作的理论,我还使用 npm 包 web-push 来帮助实现这一点。在前端,您提示用户是否愿意接收来自您网站的推送通知。如果他们接受,您实际上会为您的公共 Vapid 密钥的用户创建一个唯一的端点。公共 vapid 密钥是由 web-push 包创建的(我将链接有关如何执行此操作的教程)。因此,创建的端点是服务器如何知道向何处发送推送通知的方式。然后,您将该端点发送回服务器并将其保存在数据库中或您想要用它执行的任何操作。因此,现在如果您想向该用户发送推送通知,您可以使用 webpush 向其服务工作人员生成推送,并使用该唯一端点,以便服务器知道将其发送到哪里。服务器发送消息,Service Worker 接收该消息并将推送发送给用户。用户是否登录并不重要,服务器发送到的端点是浏览器而不是用户帐户。我认为关于推送通知最让我困惑的是服务器如何知道将推送通知发送到哪里。我将举一个例子来帮助更好地说明,并希望使过程更加清晰。如果我在我的计算机上使用 Google 进行浏览,并且单击允许来自站点的通知,则将创建一个对于我的计算机和该浏览器而言唯一的端点。为了简单起见,假设所有通知端点都存储在数据库的数组中,所以现在我的新端点被推送到该数组并存储在数据库中。现在我关闭谷歌打开火狐浏览器并转到同一个网站。我现在允许使用 Firefox 发送同一站点的通知。该端点被创建并推送到数据库中的该数组并保存在数据库中。现在,该网站的所有者想要向订阅推送通知的每个人发送通知。假设他循环保存的端点数组中的每个端点并向每个端点发送一条消息。我会收到一封来自 Firefox 的通知和一封来自 google 的通知。因此,推送通知再次被链接并发送到浏览器而不是用户。我认为,如果您允许通知,那么推送通知将发送到您登录的任何地方,但不会,它会发送到您允许推送通知的浏览器。我缺乏理解,但现在在我实现它们之后,它们是如何工作的就更清楚了
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |