【问题标题】:Why are my PushSubscriptions expiring so quickly?为什么我的 PushSubscriptions 过期这么快?
【发布时间】:2020-08-12 16:05:27
【问题描述】:

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

这太疯狂了,订阅怎么会在五分钟之内过期?我搜索了我的问题,似乎没有其他人遇到过这个问题,甚至有人说subscriptions can last years!

我尝试在我的 Service Worker 中为“pushsubscriptionchange”事件实现一个事件侦听器,但根据 Serginho's answer 的说法,Chrome 在 2019 年没有实现该事件,我认为从那时起就没有改变。

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

此时我还能做什么?我考虑过用setInterval() 创建一个间隔,然后每隔一秒左右重新订阅一次用户,但我认为这不会奏效。

任何帮助将不胜感激。

【问题讨论】:

  • 这个问题困扰了我一年多。同样的问题。我用 cron-jobs 测试了向我发送推送通知,它只在第一天有效。在接下来的几天里它会过期并且没用。有更新吗?

标签: google-chrome firefox push-notification service-worker web-push


【解决方案1】:

您绝对需要在 Service Worker 中处理 pushsubscriptionchange。否则,当订阅到期并被新订阅替换时,您将丢失它。

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

如果您需要有关如何实施该活动的灵感,请查看our service worker。然后在您的服务器上,您只需将旧订阅替换为新订阅即可。

【讨论】:

  • 嘿@collimarco 我正在尝试听 pushsubscriptionchange 然后安慰它,但它对我们不起作用我已经尝试过 Edge、chrome、opera。
  • 我遵循了每一个建议,但没有一个奏效。永远不会从 pushsubsriptionchange 中遇到任何问题。我不知道你做了什么来触发它,但 chrome 不支持它。 bugs.chromium.org/p/chromium/issues/detail?id=646721
  • 您使用的是 google gcm 还是 onesignal 等其他提供商?
猜你喜欢
  • 1970-01-01
  • 2016-07-27
  • 2011-06-02
  • 2016-02-16
  • 2022-01-14
  • 2018-03-22
  • 2021-12-19
  • 2013-09-09
  • 1970-01-01
相关资源
最近更新 更多