Как идентифицировать устройство для Web Push, в случае если пользователь несколько раз одобрял/отменял подписку на уведомления?

Подключаю Web Push API к своему сайту, подписка будет доступна только авторизованным пользователям и будет доступна для всех устройств с которых пользователь подписался на уведомления. Когда пользователь подписывается на уведомление, данные о подписке сохраняются в БД.

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

На ум приходят несколько решений:

1. Парсить UserAgent в строку и сохранять хэш вместе с подпиской, например:

getHash(os_name + os_version + browser_name + (device_model ?? ''));

2. Генерировать случайный уникальный для данного пользователя хэш и хранить его local storage или IndexedDB, а также сохранять хэш вместе с подпиской

3. Ничего не делать и хранить все подписки в том числе и мёртвые. И делая очередную рассылку по подпискам пользователя: удалять на основе ответов от сервиса рассылок(404, 410)

Что посоветуете?


Ответы (0 шт):