Benachrichtigung erforderlich: Interaktion erforderlich: Flüssigere UX für Benachrichtigungen auf dem Computer

Seit der Einführung von Benachrichtigungen und Push-Nachrichten in Chrome haben wir viel gelernt. Ein konkretes Feedback zu Geräten der Desktop-Klasse war, dass Benachrichtigungen auf dem Bildschirm des Nutzers sichtbar bleiben, bis sie vom Nutzer aktiv geschlossen werden.

Wenn die Seite geöffnet ist, kann ein einfacher JavaScript-Timer erstellt werden, der die Benachrichtigung automatisch schließt. Jetzt leben wir jedoch in einer Welt mit Service Workern, in der Webanwendungen über die Lebensdauer eines Fensters hinaus bestehen können und die Service Worker so schnell wie möglich in den Ruhemodus versetzt werden, um Ressourcen zu sparen. Das bedeutet, dass wir einen anderen Weg brauchen, um eine gute User Experience zu schaffen.

Die Benachrichtigungsspezifikation wurde kürzlich aktualisiert, um dem Entwickler die Möglichkeit zu geben, anzugeben, dass die Benachrichtigung nicht automatisch vom System geschlossen werden soll.

Einer Benachrichtigung ist ein Flag für die Einstellung „Interaktion erforderlich“ zugeordnet, die anfangs nicht festgelegt ist. Gibt an, dass die Benachrichtigung auf Geräten mit einem ausreichend großen Bildschirm leicht zugänglich bleiben soll, bis der Nutzer sie aktiviert oder schließt.

Dies mag seltsam erscheinen, aber was bedeutet, dass die Benachrichtigung nach kurzer Zeit aus der Ansicht entfernt werden sollte, sofern Sie nichts anderes angeben.

In Chrome 47 (Beta im Oktober 2015) wird jetzt die Option requireInteraction unterstützt. Sofern sie nicht explizit angegeben und auf true gesetzt ist, werden alle Benachrichtigungen auf dem Computer nach etwa 20 Sekunden geschlossen. Das Interessanteste ist jedoch, dass Chrome vor Kurzem das Benachrichtigungscenter von allen Desktop-Plattformen (außer ChromeOS) entfernt hat. Minimierte Benachrichtigungen gelten also als geschlossen und sind über einen Aufruf an getNotifications in einem Service Worker nicht zugänglich.

In Chrome für Android wird die Option requireInteraction ignoriert, da die Benachrichtigungen im Benachrichtigungsbereich minimiert werden.

navigator.serviceWorker.register('sw.js');

function showNotifications() {
    Notification.requestPermission(function(result) {
    if (result === 'granted') {
        navigator.serviceWorker.ready.then(function(registration) {
        registration.showNotification('requireInteraction: true', {
            body: 'Requires interaction',
            icon: '../images/touch/chrome-touch-icon-192x192.png',
            requireInteraction: true,
            tag: 'require-interaction'
        });

        registration.showNotification('requireInteraction: false', {
            body: 'Does not require interaction',
            icon: '../images/touch/chrome-touch-icon-192x192.png',
            requireInteraction: false,
            tag: 'no-require-interaction'
        });
        });
    }
    });
}

Demo ansehen.