使用 pushsubscriptionchange 时如何获取旧的订阅数据

How to get old subscription data when using pushsubscriptionchange

我正在将订阅端点、auth 和 p256dh 密钥保存在数据库中,我想在我的服务工作者上实施 pushsubscriptionchange 事件以重新订阅和更新我在数据库中的旧订阅到期时,但我找不到获取旧订阅数据的方法。我正在使用这个简单的代码来测试它。

self.addEventListener('pushsubscriptionchange', function(event) {
    console.log('subscription expired');
    event.waitUntil(
        self.registration.pushManager.subscribe({ userVisibleOnly: true })
        .then(function(subscription) {
            console.log('subscribed again');
            // send subscription data to server to update database
        })
    );
});

为了在 firefox 中触发事件,我删除了权限并再次授予它们,事件触发正常,但我找不到任何可以让我知道旧订阅数据的信息,所以我可以 delete/update在数据库上,所以我最终会得到过期的订阅和新的订阅。

如何获取旧的订阅数据?

忘了补充,我没有其他方法可以识别用户,他们没有注册,这不是应用程序,只是一个网站。

你不能。当前任何浏览器都在 pushsubscriptionchange 中传递参数。

有关详细信息,请参阅:How to handle WebPush API PushSubscriptionChange event in modern browsers