J'ai un problème avec les notifications push sur firefox, après avoir envoyé et reçu des notifications push je veux pouvoir cliquer dessus pour aller sur une page liée à la notification (qui contient donc l'url à l'interieur), j'ai donc fait le service worker et ça fonctionne parfaitement sur Chrome/Edge. Cependant, sur Firefox, lorsque je clique sur la notification dès qu'elle est reçue, cela fonctionne, mais une fois que le service worker est arrêté (30s après qu'aucun évènement ne se soit déclenché) ou si j'ai fermé le navigateur, lorsque je clique sur une notification, il n'y a aucune action et le service worker ne redémarre pas (contrairement à Chrome).

Le Service-Worker (assez semblable à celui du tuto de grafikart) :

self.addEventListener("install", (event) => {
  console.log('SW installed');
  event.waitUntil(self.skipWaiting());
});

self.addEventListener('push', (event) => {
  let notification_data = JSON.parse(event.data.text());

  if (event.data) {
    const title = notification_data.title;
    const options = {
      body: notification_data.body,
      icon: notification_data.icon,
      badge: notification_data.badge,
      data: notification_data.url,
    };

    event.waitUntil(self.registration.showNotification(title, options));
  }
});

self.addEventListener('notificationclick', function(event) {
  event.notification.close();
  event.waitUntil(
    openUrl(event.notification.data)
  );
});

async function openUrl(url) {
  const windowClients = await self.clients.matchAll({
    type: "window",
    includeUncontrolled: true,
  });

  for (let i = 0; i < windowClients.length; i++) {
    const client = windowClients[i];
    if (client.url === url && "focus" in client) {
      return client.focus();
    }
  }
  if (self.clients.openWindow) {
    return self.clients.openWindow(url);
  }
  return null;
}

J'ai essayé de vider le cache de Firefox et de remettre la configuration à 0, mais cela ne fonctionne toujours pas. J'ai essayé de regarder où le cache est stocké pour voir si les données ont été supprimées lorsque le navigateur a été fermé, mais je ne les ai pas trouvées. J'ai également essayé de voir si l'événement "notificationclick" était géré différemment entre Chrome et Firefox. En cherchant, j'ai vu que background.service_worker (ici) n'était pas encore supporté sur firefox mais je ne sais pas s'il y a un lien entre ca et mon probleme.

Malheureusement il n'y a aucune erreur d'affiché quand le service ne se rallume pas.. Des idées ?

Aucune réponse