【问题标题】:STOP Push notification after logout注销后停止推送通知
【发布时间】:2019-06-15 16:26:24
【问题描述】:

我在我的项目中使用了用户 swPush 的 angular。通知工作正常,但即使在 user1 注销后我也会收到推送通知。我不想向已注销的用户推送通知。在 user2 同时登录 user1 和 user2 在同一设备上收到通知后,这会使用户感到困惑。我想限制用户仅在登录时收到通知。我该如何实现这一点。有什么方法吗。

我已经尝试使用注销服务工作者

navigator.serviceWorker.getRegistrations().then(function(registrations) {
            for(let registration of registrations) {
                registration.unregister()
            } 
 })

但是在使用这个之后,两个用户都没有收到通知。

感谢和问候

【问题讨论】:

    标签: push-notification service-worker web-push angular-service-worker


    【解决方案1】:

    您不应该取消注册 Service Worker 注册,因为这样会取消所有注册。取消注册 Service Worker 可以防止发生任何推送逻辑,因为 Web 推送是 Service Worker 之上的一层 - 您需要注册并激活 Service Worker 才能使用推送通知,对吧?

    如果您只考虑“显示通知”,您有两种选择:

    1. 当用户注销时,停止发送推送通知。当然,这意味着 Web 应用程序逻辑必须以某种方式通知您的服务器,现在发生了注销事件以及它的确切身份(该特定用户可能的不同浏览器会话中的哪一个)。当然,您的服务器应该已经有关于注销事件的信息。
    2. 在浏览器中跟踪登录用户(您的 JS 代码)并仅显示与该用户相关的推送通知。您需要以某种方式区分推送通知的接收者和浏览器中的活动用户会话,并且很可能在 SW 中的 self.addEventlistener('push', ...) 中处理它。

    如果您从隐私/安全角度考虑,选项 #2 当然是错误的。如果您只隐藏/不显示已注销用户的通知,则意味着您仍在从服务器发送它们。通知可能包括私人信息等。

    所以你真的应该选择#1。这是实现这一点的正确方法。它不会泄露已注销用户的任何信息,将用户的推送订阅分开,并节省带宽。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 2018-03-06
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多