push-notification - 真的有必要在每次页面加载时更新订阅吗?

标签 push-notification web-push push-api

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

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

一切都很顺利,但总感觉有些“不对”。

在每个页面加载时,service worker 都会被注册,然后它会检查他们是否已经订阅,即使他们已经订阅,它也会调用 updateSubscriptionOnServer()其中包含以下评论:

// TODO: Send subscription to application server

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

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

非常感谢

最佳答案

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

  • 用户可能已更改了来自 blocked 的权限至 granted (或默认)在浏览器设置中,因此您要创建订阅并将其发送到服务器
  • 订阅端点可能因不同原因而改变,因此您需要确保将当前端点发送到服务器(之前的端点将返回 410 Gone )

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

    关于push-notification - 真的有必要在每次页面加载时更新订阅吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48670624/

    相关文章:

    php - Web Push php 库 : Throws internal error

    push-notification - 了解如何存储 Web 推送端点

    html - 推送 API 和服务器发送的事件有什么区别?

    javascript - getSubscription 返回一个空订阅

    java - 如何仅使用 Java(无 Javascript)创建 MFP 推送通知适配器

    tomcat - GCM 在服务器发送消息时出错

    java - Exchange Web 服务 Java API + RESTful 推送通知监听器

    ruby-on-rails - 在 Ruby 服务器上解密 Webpush 负载

    iphone - 当收到 RemoteNotification 时跳转到其他页面并取消位置