Signatur
Beschreibung
Die schreibgeschützte Eigenschaft requireInteraction des Notification-Interfaces zeigt an, ob die Benachrichtigung aktiv bleiben soll, bis der Nutzer etwas mit ihr macht, also sie anklickt oder schließt. Normalerweise blendet das Betriebssystem oder der Browser eine Benachrichtigung nach einigen Sekunden aus. Steht der Wert auf true, soll das nicht passieren.
Der Wert wird beim Erzeugen über die gleichnamige Option requireInteraction im Optionsobjekt von new Notification(title, options) oder ServiceWorkerRegistration.showNotification(title, options) festgelegt. Die Eigenschaft liest diese Einstellung nur aus und lässt sich danach nicht mehr ändern.
Sinnvoll ist das bei Meldungen, die der Nutzer nicht verpassen darf: eingehende Anrufe, Kalendererinnerungen, Sicherheitswarnungen oder Aufgaben, die eine Bestätigung brauchen. Für reine Hinweise wie „Download fertig“ sollte man die Option nicht setzen, weil dauerhaft stehende Benachrichtigungen schnell stören.
Rückgabewert
true, wenn die Benachrichtigung bis zu einer Aktion des Nutzers sichtbar bleiben soll, sonst false (Standardwert).Beispiele
Dauerhafte Benachrichtigung erzeugen und Eigenschaft auslesen
const zeigeErinnerung = async () => {
const erlaubnis = await Notification.requestPermission();
if (erlaubnis !== 'granted') return;
const n = new Notification('Meeting in 5 Minuten', {
body: 'Sprint-Planung im Raum 2.14',
requireInteraction: true
});
console.log(n.requireInteraction);
};
zeigeErinnerung();
Unterstützung vorher prüfen
const unterstuetztRequireInteraction =
'Notification' in window &&
'requireInteraction' in Notification.prototype;
console.log(unterstuetztRequireInteraction
? 'Benachrichtigungen können sichtbar bleiben.'
: 'Fallback: Hinweis zusätzlich in der Seite anzeigen.');
Im Service Worker bei Push-Nachrichten
// sw.js
self.addEventListener('push', (event) => {
const daten = event.data?.json() ?? { titel: 'Eingehender Anruf' };
event.waitUntil(
self.registration.showNotification(daten.titel, {
body: 'Tippen, um anzunehmen',
tag: 'anruf',
requireInteraction: true
})
);
});
self.addEventListener('notificationclick', (event) => {
console.log('Bleibt sichtbar:', event.notification.requireInteraction);
event.notification.close();
event.waitUntil(clients.openWindow('/anruf'));
});
// Wichtig · Fallstricke
- Browserunterstützung: Chromium-Browser (Chrome, Edge, Opera) unterstützen die Eigenschaft. Firefox und Safari werten die Option nicht aus, dort ist die Eigenschaft meist
undefined. Wie lange die Meldung wirklich sichtbar bleibt, hängt außerdem vom Betriebssystem ab. - Nur ein Wunsch an den Browser: Unter macOS kommt es zum Beispiel auf den eingestellten Benachrichtigungsstil an („Banner“ oder „Hinweise“). Unter Android und in manchen Linux-Desktops wird die Einstellung teilweise ignoriert.
- Schreibgeschützt: Wer nachträglich
n.requireInteraction = falsesetzt, ändert nichts, im Strict Mode wird eventuell sogar einTypeErrorausgelöst. Um eine Meldung zu entfernen, ruft manclose()auf. - Nutzbarkeit: Die Option nur sparsam einsetzen. Zu viele dauerhafte Meldungen führen oft dazu, dass Nutzer die Berechtigung wieder entziehen.
- Die Eigenschaft gibt es nur in sicheren Kontexten (HTTPS), und Benachrichtigungen setzen die Berechtigung
grantedvoraus.