Вам понадобится уникальный идентификатор, к которому можно обратиться для каждого пользователя, а также отслеживать подписку и вызывать уведомление.
Я предложу вам объединить несколько вещей и сделать их уникальными для разных браузеров. и устройство к устройству.
Используйте этот плагин для получения уникального идентификатора устройства
device-uuid
Использованиеэто и найти имя браузера
getBrowserName() {
// @ts-ignore
let isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
if (isOpera) return 'isOpera';
// Firefox 1.0+
// @ts-ignore
let isFirefox = typeof InstallTrigger !== 'undefined';
if (isFirefox) return 'isFirefox';
// Safari 3.0+ "[object HTMLElementConstructor]"
// @ts-ignore
let isSafari = /constructor/i.test(window.HTMLElement) || (function (p) {
return p.toString() === "[object SafariRemoteNotification]";
// @ts-ignore
})(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));
if (isSafari) return 'isSafari';
// Internet Explorer 6-11
// @ts-ignore
let isIE = /*@cc_on!@*/false || !!document.documentMode;
if (isIE) return isIE;
// Edge 20+
// @ts-ignore
let isEdge = !isIE && !!window.StyleMedia;
if (isEdge) return 'isEdge';
// Chrome 1 - 71
// @ts-ignore
let isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);
if (isChrome) return 'isChrome';
// Blink engine detection
// @ts-ignore
let isBlink = (isChrome || isOpera) && !!window.CSS;
if (isBlink) return 'isBlink';
}
Теперь СОБЛЮДАЙТЕ имя браузера с UUID и идентификатором пользователя для входа. Отслеживайте подписку с уникальным идентификатором и отправляйте уведомления всем браузерам и устройствам, в которые вошел пользователь.
Вы должны учитывать браузер, поскольку uuid будет одинаковым для устройства во всех браузерах. .
const uniqueId = uuid + getBrowserName () + logedInUserId;
Полагаю, это должно вам помочь.