为什么我的 PushSubscriptions 到期这么快?

Min*_*Kim 2 firefox google-chrome push-notification service-worker web-push

我按照教程在我的 Web 应用程序中实现推送通知,当它们工作时,它们很快就会停止工作。它似乎可以很好地处理前几个通知,但之后,有时不到五分钟,订阅就会过期,根据我的后端。我从推送服务中收到错误代码 410,教程说这意味着订阅已过期。

这太疯狂了,订阅怎么会在不到五分钟的时间内到期?我搜索了我的问题,似乎没有其他人遇到过这个问题,有些人甚至说订阅可以持续数

我尝试在我的 service worker 中为“pushsubscriptionchange”事件实现一个事件监听器,但根据Serginho 的回答,Chrome 自 2019 年起没有实现该事件,我认为从那时起就没有改变。

哦,虽然 Chrome 可以处理订阅(但如上所述只能处理一次/两次),但 Firefox 甚至不做任何事情。我感觉我快疯了。但是,如果我使用此站点测试推送订阅功能本身,它可以在 Firefox 中运行!和铬!他们在做什么而我不是?它们显示的代码与我上面链接的教程完全相同。

我现在还能做什么?我已经考虑过可能会创建一个间隔setInterval()并每隔一秒左右重新订阅用户,但我认为这行不通。

任何帮助,将不胜感激。

col*_*rco 5

你绝对需要pushsubscriptionchange在你的服务工作者中处理。否则,当订阅到期并被新订阅替换时,您将失去它。

Chrome 和大多数浏览器实际上会触发该事件(我不知道您在哪里阅读了不同的内容)。我确信它会被触发,因为在我们的推送服务中,我们每小时从该事件中收到数千次点击。

如果您需要有关如何实现该事件的灵感,请查看我们的 Service Worker。然后在您的服务器上,您只需用新订阅替换旧订阅即可。

  • 我遵循了每一个建议,但没有一个起作用。永远不会从 PushSubscriptionChange 中命中任何内容。我不知道你做了什么来触发它,但 chrome 不支持它。https://bugs.chromium.org/p/chromium/issues/detail?id=646721 (2认同)
  • Chrome目前没有实现pushsubscriptionchange:https://chromestatus.com/feature/6242325854420992 (2认同)

rua*_*akh 0

\n

我按照教程在我的网络应用程序中实现推送通知,当它们工作时,它们很快就会停止工作。它似乎可以很好地处理前几个通知,但根据我的后端,有时不到五分钟,订阅就会过期。

\n
\n

我认为订阅不可能在五分钟内到期。事实上,据我所知,Firefox 或 Chrome 中的订阅永远不会过期。

\n
\n

我从推送服务中收到错误代码 410,教程称该错误代码意味着订阅已过期。

\n
\n

HTTP 410 Gone 错误表示订阅不再存在\xe2\x80\x94 ,这与表示订阅已过期不同。还有其他方式可能会导致订阅不再存在;例如:

\n
    \n
  • pushSubscription对象有一个unsubscribe()方法 [ MDN link ],如果您在站点 JavaScript 中调用该方法,则推送订阅将被删除。
  • \n
  • 推送通知仅在用户允许的情况下才有效。如果用户撤销网站发送它们的权限,则推送订阅将被删除。
  • \n
\n

我不知道您的设置中的任何一个是否合理。我建议在客户端代码中添加尽可能多的日志记录,以尝试缩小可能出现问题的范围。

\n