STOP Push-уведомление после выхода - PullRequest
0 голосов
/ 15 июня 2019

Я использую angular в своем проекте, пользователь swPush. Уведомление работает нормально, но даже после выхода пользователя user1 я получаю push-уведомление. Я не хочу отправлять уведомления пользователям, вышедшим из системы. После того, как пользователь user2 вошел в систему как user1, так и user2, получая уведомления на одном устройстве, это сбивает с толку пользователя. Я хочу запретить пользователям получать уведомления только тогда, когда они вошли в систему. Как я могу добиться этого. Есть ли способ.

Я уже пытаюсь отменить регистрацию сервисных работников, используя

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

Но после использования оба пользователя не получают уведомления.

Спасибо и всего наилучшего

1 Ответ

0 голосов
/ 15 июня 2019

Вы не должны отменять регистрацию регистрации Service Worker, потому что, ну, это отменяет их регистрацию. Отмена регистрации Service Worker предотвращает возникновение какой-либо логики push-уведомлений, так как web-push - это слой поверх Service Workers - для использования push-уведомлений необходимо, чтобы Service Workers были зарегистрированы и активны, верно?

У вас есть два варианта, если вы думаете только о «показе уведомлений»:

  1. Когда пользователь выходит из системы, прекращает отправку push-уведомлений. Конечно, это означает, что логика веб-приложения должна каким-то образом информировать ваш сервер о том, что теперь произошло событие выхода из системы и кто именно (каким из возможных сеансов браузера этого конкретного пользователя). Конечно, ваш сервер уже должен иметь информацию о событии выхода из системы.
  2. Отслеживайте зарегистрированного пользователя в браузере (ваш код JS) и показывайте только push-уведомления, относящиеся к этому пользователю. Вам нужно как-то различать получателей push-уведомлений и активных пользовательских сеансов в браузере и, скорее всего, обрабатывать их в self.addEventlistener('push', ...) в SW.

Если вы думаете о конфиденциальности / безопасности, вариант № 2, конечно, неверен. Если вы только скрываете / не отображаете уведомления пользователя, вышедшего из системы, это означает, что вы все еще отправляете его с сервера. Уведомления могут включать в себя личную информацию и еще много чего.

Так что на самом деле вы должны пойти на # 1. Это правильный способ реализовать это. Он не пропускает информацию у вышедших из строя пользователей, разделяет принудительные подписки пользователей и сохраняет пропускную способность.

...