Что делать, если несколько пользователей используют одно устройство? - PullRequest
0 голосов
/ 06 мая 2018

Я искал в Интернете, но никто странно не говорит об этом.


Прежде всего, API , похоже, не поддерживает несколько контекстов подписки, он не требует аргументов.

Но это не такая уж большая проблема, потому что, если один пользователь уже предоставил разрешения, я могу получить уже существующую подписку и повторно использовать ее / указать ее другому пользователю (используйте одинаковые URL для обоих).


Здесь начинаются проблемы. Если в систему вошел один пользователь (например, токен в LocalStorage), браузер закрывается, и я отправляю уведомление, которое затем пробуждает Service Worker и запускает мой код события уведомления.

Как узнать, показывать ли мне уведомление или нет? Как мне узнать, кто вошел в систему? У меня нет доступа к LocalStorage в Service Worker, я понятия не имею, кто вошел в систему. Есть ли другие способы?

1 Ответ

0 голосов
/ 06 мая 2018

Мы испробовали множество различных решений и, наконец, мы выбрали этот подход : конечная точка связана максимум с одним идентификатором пользователя .

Когда вы отправляете конечную точку на сервер для хранения, вы также отправляете текущий идентификатор пользователя, который будет прикреплен к этой конечной точке (подписке) в вашей базе данных.

Когда пользователь выходит из системы, вы выполняете вызов Javascript из этого браузера, который удаляет идентификатор пользователя из подписки в вашей базе данных.

Когда вам нужно настроить таргетинг на пользователя, вы запрашиваете базу данных, чтобы найти устройства, в данный момент связанные с этим пользователем.

Вы не можете одновременно регистрировать несколько пользователей на вашем веб-сайте, поэтому нет смысла иметь нескольких пользователей, связанных с конечной точкой браузера одновременно . Если два пользователя в разное время используют один и тот же браузер, вы просто обновляете идентификатор пользователя для этой подписки, когда пользователь выходит из системы (удаляет идентификатор пользователя) или входит в систему (задает идентификатор пользователя).

...