3

我目前正在开发一个允许用户订阅推送通知的网络应用程序。我们将订阅存储在映射到用户 ID 的数据库表中,当需要发送通知时,我们将查找用户的订阅并发送通知。

我一直在关注本指南: https ://developers.google.com/web/fundamentals/codelabs/push-notifications/

一切进展顺利,但有些事情感觉不太“正确”。

在每次页面加载时,服务工作者都会被注册,然后它会检查它们是否已经被订阅,即使它们是updateSubscriptionOnServer()包含以下注释的调用:

// TODO: Send subscription to application server

这实际上意味着每个页面加载都将尝试将相同的订阅写回数据库。显然我们将在应用程序中处理它,但这似乎并不理想。

使用 Web Push API,这是预期的方法吗?

非常感谢

4

1 回答 1

4

是的,在每次页面加载时将订阅发送到服务器会很有用:

  1. 用户可能已在浏览器设置中将权限从blockedto granted(或默认)更改,因此您希望创建订阅并将其发送到服务器
  2. 订阅端点可能会因不同的原因发生变化,因此您需要确保将当前端点发送到服务器(之前的端点会返回410 Gone

上述几点与性能之间的折衷可以是仅在给定页面(例如主页)上将订阅发送到服务器。

于 2018-02-07T20:38:06.237 回答