Start · Sprachen · JavaScript · Referenz · Notification.renotify

Notification.renotify

Eigenschaft

Schreibgeschützte Eigenschaft, die angibt, ob der Benutzer erneut benachrichtigt (Ton, Vibration) wird, wenn eine neue Benachrichtigung eine ältere mit gleichem <code>tag</code> ersetzt.

seit JavaScript Experimentell: Chromium-Browser (Chrome/Edge 50+, Kategorie: webapi

Signatur

Notification.renotify

Beschreibung

Die schreibgeschützte Eigenschaft renotify des Notification-Interfaces liefert einen booleschen Wert. Er gibt an, ob der Benutzer beim Ersetzen einer bestehenden Benachrichtigung erneut aufmerksam gemacht wird. Gesetzt wird der Wert über die Option renotify im Konstruktor new Notification(title, options) oder in ServiceWorkerRegistration.showNotification().

Wichtig ist das Zusammenspiel mit der Option tag: Benachrichtigungen mit demselben tag ersetzen sich gegenseitig, statt sich zu stapeln. Normalerweise passiert das still, die alte Meldung wird also ohne Ton oder Vibration aktualisiert. Mit renotify: true macht der Browser den Benutzer auch bei der Ersetzung wieder aufmerksam. Das passt zum Beispiel zu Chat-Apps, die eine einzige Meldung „3 neue Nachrichten“ laufend aktualisieren und bei jeder neuen Nachricht trotzdem einen Ton abspielen sollen.

Der Standardwert ist false. Wer renotify: true ohne einen nicht leeren tag angibt, bekommt einen TypeError, weil es dann nichts zu ersetzen gibt.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn der Benutzer beim Ersetzen einer gleich getaggten Benachrichtigung erneut benachrichtigt wird, sonst false (Standard).

Beispiele

Chat-Benachrichtigung mit erneutem Hinweis aktualisieren

const showChatNotification = async (count) => {
  if (Notification.permission !== 'granted') {
    const result = await Notification.requestPermission();
    if (result !== 'granted') return;
  }

  const n = new Notification('Neue Nachrichten', {
    body: `${count} ungelesene Nachricht(en)`,
    tag: 'chat-unread',   // gleicher Tag ersetzt die alte Meldung
    renotify: true        // trotzdem Ton/Vibration auslösen
  });

  console.log(n.tag, n.renotify);
};

showChatNotification(3);
chat-unread true

Eigenschaft auslesen und Unterstützung prüfen

const supportsRenotify = 'renotify' in Notification.prototype;
console.log('renotify unterstützt:', supportsRenotify);

const n = new Notification('Download', {
  body: 'Fortschritt: 40 %',
  tag: 'download-42'
});

// ohne Angabe ist der Wert false (bzw. undefined ohne Unterstützung)
console.log(n.renotify);
renotify unterstützt: true false

Im Service Worker bei Push-Nachrichten verwenden

// sw.js
self.addEventListener('push', (event) => {
  const data = event.data?.json() ?? { title: 'Update', body: '' };

  event.waitUntil(
    self.registration.showNotification(data.title, {
      body: data.body,
      tag: 'news-feed',
      renotify: true
    }).then(async () => {
      const list = await self.registration.getNotifications({ tag: 'news-feed' });
      console.log('renotify:', list[0]?.renotify);
    })
  );
});
renotify: true

Fehler: renotify ohne tag

try {
  new Notification('Test', { renotify: true });
} catch (err) {
  console.log(err.name);
}
TypeError

// Wichtig · Fallstricke

  • Nur lesbar: notification.renotify = true hat keine Wirkung. Der Wert lässt sich nur beim Erstellen über die Optionen festlegen.
  • Ohne tag gibt es einen Fehler: renotify: true mit leerem oder fehlendem tag wirft einen TypeError.
  • Browser-Kompatibilität: Die Eigenschaft ist experimentell und wird derzeit nur von Chromium-Browsern unterstützt. Firefox und Safari ignorieren die Option, dort ist die Eigenschaft undefined. Vor der Nutzung mit 'renotify' in Notification.prototype prüfen.
  • Stumme Benachrichtigungen: In Kombination mit silent: true ist die Kombination widersprüchlich. Die Spezifikation verbietet sie, Browser werfen dann einen TypeError.
  • Nur sichere Kontexte: Die Notifications API funktioniert nur über HTTPS und erst, wenn der Benutzer die Berechtigung erteilt hat.
  • Sparsam einsetzen: Häufige erneute Hinweise stören die Benutzer und verleiten sie dazu, die Berechtigung zu entziehen.