Как работать с многопользовательским сценарием с помощью push-уведомлений Pushy Web?

У меня есть редкий сценарий, когда есть вероятность, что на одном устройстве и в одной комбинации браузеров могут входить и выходить несколько пользователей.

Например, на домашнем ноутбуке, использующем Chrome, пользователь 1 может войти в систему и закрыть браузер (для аутентификации установлен тайм-аут, поэтому использование будет отключено через n минут бездействия) или выход из системы. Пользователь 2 может затем войти.

Я планирую использовать push-уведомления Pushy для отправки пользователям push-уведомлений, но я нажал на блокировщик.

Следующий код используется для регистрации 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 и смогу успешно отправить push-уведомление. Если пользователь 1 вышел из системы и пользователь 1 вошел в систему, новый токен устройства не зарегистрирован, поэтому я могу назначить токен устройства пользователю 2.

Если я попытаюсь очистить все локальное хранилище Pushy, тогда токен нового устройства def456 и я могу успешно отправить push-уведомление def456 но также может отправить push-уведомление abc123,

Если я отменил регистрацию работника сервиса, а затем попытался зарегистрировать Pushy, используя приведенный выше код, тогда токен нового устройства ghi789 и я могу успешно отправить push-уведомление ghi789, Теперь я не могу отправить push-уведомления abc123а также def456,

Я даже пытался обновить значения локального хранилища Pushy вручную, но это не работает.

Я немного сбит с толку, как справиться с этим сценарием, чтобы только вошедший в систему пользователь получал push-уведомление.

Нужно ли использовать области? Если да, как я могу использовать области. Нужно ли обновлять работника службы? Если да, то как мне добиться этого, так как я думаю, что Push обрабатывает регистрацию сервисного работника. Есть что-то еще, что я пропускаю?

Должен ли я отменить регистрацию сервисного работника, когда пользователь выходит из системы, чтобы при повторной регистрации пользователя в сервисном работнике регистрировался новый токен устройства Pushy?

0 ответов

Поздний ответ, но когда-нибудь кто-то может найти это полезным.

Наш рекомендуемый подход:

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

Полное раскрытие - я работаю в Pushy.

Другие вопросы по тегам