@arab789

Как избавится от двойного пуша?

На сайте используются уведомления с firebase. Когда pwa-приложение на телефоне в foreground, все нормально, приходят пуши, но если в background то прилетает их сразу два. Как выяснилось это связано с обработкой событий в сервис-воркере:
// firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-messaging.js');

firebase.initializeApp({
    messagingSenderId: 'ххххххххххххх'
});

const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler(function(payload) {
    // return self.registration.hideNotification();
});

self.addEventListener('push', event => {
    let payload = event.data.json();
let options = payload.notification;
options.data = {};
options.data.url = options.click_action;
let title = options.title;
event.waitUntil(Promise.all([self.registration.showNotification(title, options)]));
});

При background срабатывает и push и setBackgroundMessageHandler. Как их разветвить я не понял..
Если отключить библиотеки firebase, то push событие работает в background и foreground, но если телефон долго не трогать, то пуш не приходит и прийдет есть телефон разблокировать.
Решил вернуть firebase и убрать обработчик push, как следствие перестали приходить пуши в foreground. Написал в теле страницы:
messaging.onMessage(function(payload) {
...............
});

чтобы принимать пуш и показывать. Все хорошо, принимает, показывает, но на телефоне перестал обрабатываться notificationclick. Если пуш приходит background , то все ок и клик обработать можно.
Как правильно принять пуш на десктопе и телефоне в background и foreground?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RealtimeBoard Пермь
от 90 000 до 140 000 руб.
Smartbics Нижний Новгород
от 50 000 до 70 000 руб.
//stablecode Вена
от 110 000 до 140 000 руб.
21 февр. 2019, в 02:24
8 руб./в час
20 февр. 2019, в 23:54
1000 руб./за проект
20 февр. 2019, в 23:26
25000 руб./за проект