410 推送订阅已取消订阅或已过期

410 push subscription has unsubscribed or expired

我们的网络推送通知工作正常,但最近我们注意到端点将在不到一天内过期,当我们最初尝试发送通知时,它运行得很好,但后来停止发送,当我们检查时我们发现它给出状态码 410

消息是

410 push subscription has unsubscribed or expired

我们搜索了 google 并发现了几个 link 表示我们需要在每次 link 过期时通过发送旧的和新的令牌重新订阅并将其保存在数据库中但是问题是我们没有大量的订户并且为每个人都这样做是站不住脚的。最重要的是,人们不会一次又一次地打开网站,如果只有在客户再次打开网站时才能实现重新订阅,那么很多端点将会失效,因为除了少数非常受欢迎的网站之外,人们很少 return 一次又一次地访问网站。

那么有没有什么方法可以通过 php 在服务器端交换旧端点而不依赖于客户端来更新新端点?

他们已经订阅了我们的终点,但已过期。

或者我们是否可以首先延长生成的端点的有效期?

你必须在 service worker 中监听 pushsubscriptionchange,否则你会在一段时间后失去所有订阅者:订阅有一个持续时间,然后会自动替换。

您可以在此处查看 pushsubscriptionchange 定义的真实示例:

https://pushpad.xyz/service-worker.js

然后在服务器上您需要用新端点替换旧端点。