Вы не должны отменять регистрацию регистрации Service Worker, потому что, ну, это отменяет их регистрацию. Отмена регистрации Service Worker предотвращает возникновение какой-либо логики push-уведомлений, так как web-push - это слой поверх Service Workers - для использования push-уведомлений необходимо, чтобы Service Workers были зарегистрированы и активны, верно?
У вас есть два варианта, если вы думаете только о «показе уведомлений»:
- Когда пользователь выходит из системы, прекращает отправку push-уведомлений. Конечно, это означает, что логика веб-приложения должна каким-то образом информировать ваш сервер о том, что теперь произошло событие выхода из системы и кто именно (каким из возможных сеансов браузера этого конкретного пользователя). Конечно, ваш сервер уже должен иметь информацию о событии выхода из системы.
- Отслеживайте зарегистрированного пользователя в браузере (ваш код JS) и показывайте только push-уведомления, относящиеся к этому пользователю. Вам нужно как-то различать получателей push-уведомлений и активных пользовательских сеансов в браузере и, скорее всего, обрабатывать их в
self.addEventlistener('push', ...)
в SW.
Если вы думаете о конфиденциальности / безопасности, вариант № 2, конечно, неверен. Если вы только скрываете / не отображаете уведомления пользователя, вышедшего из системы, это означает, что вы все еще отправляете его с сервера. Уведомления могут включать в себя личную информацию и еще много чего.
Так что на самом деле вы должны пойти на # 1. Это правильный способ реализовать это. Он не пропускает информацию у вышедших из строя пользователей, разделяет принудительные подписки пользователей и сохраняет пропускную способность.