Open nicdnepr opened 7 years ago
Читай внимательней раздел messaging.onMessage и пример. Есть особенности с показом уведомлений на активной вкладке.
читал и этот код у меня есть https://gist.github.com/nicdnepr/91f6d4be7c4c2d75e62ec96fa680ac91#file-firebase_subscribe-js-L11 проблема в том что если активна именно вкладка где вызывается подписка тогда глючит- при клике на нотис он не исчезает и вкладка не открывается
Плохо читали. У вас не закрывается уведомление потому, что у вас не навешивается обработчик клика на уведомление.
И для решения этой проблемы нужно использовать
ServiceWorkerRegistration.showNotification()
и
Мы же хотим, что бы по клику пользователь переходил на нужную нам страницу. Для этого нам нужно добавить обработчик клика по уведомлению в ServiceWorker.
Или навешивайте обработчик напрямую на объект, но тогда вы рискуете иметь проблемы на мобильных устройствах, о чем я тоже упомянул в статье.
я читал хорошо, наверно плохо описываю я уже писал что если активна любая страница сайта то клик на нотис открывает новую вкладку или активирует открытую,и сам нотис пропадает но если активна вкладка где идет подписка на уведомления тогда вылазит баг
По моему я уже ответил на ваш вопрос, но давайте все же разберемся. Может я что упустил.
Вы регистрируете ServiceWorker который работает в фоне на всех страницах. В ServiceWorker-е вы переопределяете обработчик по умолчанию.
Вы подключаете firebase_subscribe.js только на одной странице. Так?
Вы обрабатываете событие messaging.onMessage()
только на той странице, на которой подключаете firebase_subscribe.js
.
На всех остальных страницах обработчик messaging.onMessage()
не вызывается.
Вам не кажется что тут не хватает обработчик клика? Или может стоит взять пример из статьи и показывать уведомление через ServiceWorker?
спасибо, понял добавил этот код https://github.com/peter-gribanov/serviceworker/blob/master/app.js#L100 до 111 только вылез новый баг- каждая открываемая вкладка регистрирует свой messaging.onMessage() и изза этого вместо одного нотиса получаю по каждому нотису на каждую открытую вкладку проверяю так- подписался в хроме и лисе, в лисе 1 вкладка, в хроме 2 вкладки, в лисе выводит 1 нотис а в хром 2 нотиса
Этот баг уже из другой серии. Один из читателей статьи мне уже сообщал о нем:
Серёжа Антисептик: Привет, подскажи как удалось победить баг когда шлется два уведомления при двух открытых вкладках?
Конкретного решения я предложить не могу так как не занимался этим багом.
обнаружил что дублирование происходит если активна любая вкладка сайта если нет активных тогда выводит 1 нотис может это как то поможет?
помог такой код, не знаю только насколько это правильное решение
if (!document.hidden) {
// do what you need
payload.notification.data = payload.notification;
registration.showNotification(payload.notification.title, payload.notification);
}
делал по материалам статьи https://habrahabr.ru/post/321924/ в итоге получил 2 файла https://gist.github.com/nicdnepr/91f6d4be7c4c2d75e62ec96fa680ac91 скрипт firebase_subscribe.js подключаю на странице subscribe.php, причем метод subscribe() вызываю сразу после загрузки страницы нотификации шлю с ссылкой такого типа site.ru/page/?param1=val1¶m2=val2¶m3=val3 проблема такая- если активна вкладка subscribe.php, там где подключаются нотификации, то при клике на нотификацию ничего не происходит,вкладка не открывается,нотификация не пропадает если активна любая другая вкладка сайта то работает нормально подозреваю изза явного вызова subscribe() это баг? пока вижу решение подписывать по клику на кнопку