1

我有一种罕见的情况,即在单个设备和浏览器组合上可能有多个用户登录/退出。

例如,在使用 Chrome 的家用笔记本电脑上,用户 1 可以登录并关闭浏览器(身份验证有超时,因此用户将在 n 分钟不活动后注销)或注销。然后用户 2 可以登录。

我打算使用 Pushy 网络推送通知向用户发送推送通知,但我遇到了一个阻止程序。

以下代码用于注册 Pushy:

Pushy.register({ appId: 'app-id' }).then(function (deviceToken) {
    // Print device token to console
    console.log('Pushy device token: ' + deviceToken);

    // Send the token to your backend server via an HTTP GET request
    //fetch('https://your.api.hostname/register/device?token=' + deviceToken);

    // Succeeded, optionally do something to alert the user
}).catch(function (err) {
    // Handle registration errors
    console.error(err);
});

现在,当用户 1 登录时,会生成设备令牌abc123。在内部,我将针对用户 1 存储此设备令牌,并且我能够成功发送推送通知。如果用户 1 已注销,并且用户 1 登录,则未注册新的设备令牌,因此我可以将设备令牌分配给用户 2。

如果我尝试清除 Pushy 的所有本地存储,则会def456生成一个新的设备令牌,并且我能够成功发送推送通知到def456,也能够发送推送通知到abc123.

如果我取消注册服务工作者,然后尝试使用上面的代码注册 Pushy,则会ghi789生成一个新的设备令牌,并且我能够成功地向ghi789. 现在我无法向 和 发送推送abc123通知def456

我什至尝试手动更新 Pushy 本地存储值,但这不起作用。

我有点困惑如何处理这种情况,以便只有当前登录的用户才会收到推送通知。

我需要使用范围吗?如果是,我如何使用范围。我需要更新服务人员吗?如果是,我如何实现这一点,因为我认为 Push 处理服务工作者的注册。还有什么我想念的吗?

我是否应该在用户注销时取消注册服务工作人员,以便在用户登录时再次注册服务工作人员并生成新的 Pushy 设备令牌?

4

1 回答 1

3

一个迟到的答案,但有一天有人可能会发现这很有用。

我们推荐的方法是:

当用户注销时,请始终从后端数据库中清除其关联的 Pushy 设备令牌。每当任何用户登录时,将他们最新的设备令牌发送到您的后端进行存储。此外,在存储此设备令牌之前,请检查是否有其他用户分配了此 Pushy 设备令牌。如果是这样,请先从其他用户那里清除它。然后,仅为当前登录的用户关联此 Pushy 设备令牌。

全面披露——我在 Pushy 工作。

于 2019-12-09T04:40:18.660 回答