Как узнать, активны ли веб-приложение и исполняемое приложение одновременно - PullRequest
0 голосов
/ 10 января 2019

У меня есть веб-приложение, похожее на slack, которое используется для чата, и когда пользователь не в сети, мы отправляем уведомление, что «у вас есть новое сообщение». Уведомление является push-уведомлением html5, поэтому оно работает, когда пользователь еще не открыл веб-приложение.

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

Итак, мой вопрос: можем ли мы определить, активны ли веб-приложение и exe-приложение на одном устройстве? Так что мы можем подавить одно из уведомлений. Есть ли у компьютера что-то вроде общего идентификатора, к которому мы можем получить доступ из javascript в браузере и исполняемом файле тоже?

Примечание. - На сервере хранится информация о том, что веб-приложение активно, а exe активно, мне нужно только найти, если они с одного устройства.

Заранее спасибо. Пожалуйста, дайте мне знать ваше решение.

1 Ответ

0 голосов
/ 27 января 2019

После большого количества проб и попыток с различными решениями - я нашел решение.

Я встраиваю http-сервер в приложение exe, которое позволяет мне общаться с веб-приложением. В веб-приложении я добавил веб-работника, который будет пинговать сервер приложений exe каждые 10 секунд. Если полученный ответ означает, что приложение exe активно, то я отключаю уведомление на сервере, вызывая api. Это также гарантирует, что при выходе из приложения exe веб-работник не получит никакого ответа, что означает, что exe не активен, поэтому он активирует уведомление.

Теперь еще одна проблема заключалась в том, что - после установки приложения пользователь не открыл веб-приложение, и он получает еще два уведомления. Для преодоления этого - я открываю URL веб-приложения, когда приложение exe запускается в первый раз, оно определяет статус и отключает уведомление браузера. В том же процессе - я также сохраняю browserId (уникальный идентификатор для идентификации браузера) в приложении exe, и всякий раз, когда exe-приложение запускается, я вызываю API, чтобы отключить уведомление для этих browserId.

Надеюсь, это кому-нибудь поможет.

...