Как идентифицировать устройство для Web Push, в случае если пользователь несколько раз одобрял/отменял подписку на уведомления?
Подключаю Web Push API к своему сайту, подписка будет доступна только авторизованным пользователям и будет доступна для всех устройств с которых пользователь подписался на уведомления. Когда пользователь подписывается на уведомление, данные о подписке сохраняются в БД.
Допустим пользователь несколько раз разрешает/отменяет подписку в браузере(это можно делать и офлайн) с одного устройства. Как в данном случае идентифицировать устройство, что бы знать что делать в БД: обновить существующую или добавить новую подписку? Как идентифицировать устройство, какие практики используются?
На ум приходят несколько решений:
1. Парсить UserAgent в строку и сохранять хэш вместе с подпиской, например:
getHash(os_name + os_version + browser_name + (device_model ?? ''));
2. Генерировать случайный уникальный для данного пользователя хэш и хранить его local storage или IndexedDB, а также сохранять хэш вместе с подпиской
3. Ничего не делать и хранить все подписки в том числе и мёртвые. И делая очередную рассылку по подпискам пользователя: удалять на основе ответов от сервиса рассылок(404, 410)
Что посоветуете?