Notification Triggers API

Mit Triggern für Benachrichtigungen können Sie lokale Benachrichtigungen planen, für die keine Netzwerkverbindung erforderlich ist. Daher sind sie ideal für Anwendungsfälle wie Kalender-Apps.

Was sind Benachrichtigungsauslöser?

Webentwickler können Benachrichtigungen mithilfe der Web Notifications API anzeigen lassen. Diese Funktion wird häufig mit der Push API verwendet, um den Nutzer über zeitkritische Informationen wie Eilmeldungen oder empfangene Nachrichten zu informieren. Benachrichtigungen werden angezeigt, indem JavaScript auf dem Gerät des Nutzers ausgeführt wird.

Das Problem an der Push API besteht darin, dass sie nicht zuverlässig ist, um Benachrichtigungen auszulösen, die angezeigt werden müssen, wenn eine bestimmte Bedingung, z. B. Zeit oder Ort, erfüllt ist. Ein Beispiel für eine zeitbasierte Bedingung ist eine Kalenderbenachrichtigung, die Sie an eine wichtige Besprechung mit Ihrem Chef um 14 Uhr erinnert. Ein Beispiel für eine standortbasierte Bedingung ist eine Benachrichtigung, die Sie daran erinnert, Milch zu kaufen, wenn Sie sich in der Nähe eines Lebensmittelgeschäfts befinden. Die Netzwerkverbindung oder akkusparende Funktionen wie der Stromsparmodus können die Zustellung von Push-basierten Benachrichtigungen verzögern.

Benachrichtigungstrigger lösen dieses Problem, indem Sie Benachrichtigungen mit ihrem Auslösezustand im Voraus planen können, sodass das Betriebssystem die Benachrichtigung zum richtigen Zeitpunkt sendet, auch wenn keine Netzwerkverbindung besteht oder das Gerät im Energiesparmodus ist.

Anwendungsfälle

Kalenderanwendungen können Nutzer mithilfe von zeitbasierten Benachrichtigungsauslösern an anstehende Besprechungen erinnern. Das Standardbenachrichtigungsschema für eine Kalenderanwendung könnte sein, eine erste Vorabbenachrichtigung eine Stunde vor einer Besprechung und dann eine weitere dringende Benachrichtigung fünf Minuten vorher anzuzeigen.

Ein Fernsehsender erinnert Nutzer möglicherweise daran, dass ihre Lieblingsfernsehsendung beginnt oder der Livestream einer Konferenz beginnt.

Websites mit Zeitzonenkonvertierungen können zeitbasierte Trigger für Benachrichtigungen verwenden, damit Nutzer Wecker für Telefonkonferenzen oder Videoanrufe planen können.

Aktueller Status

Step Status
1. Erklärende Erklärung erstellen Abschließen
2. Ersten Entwurf der Spezifikation erstellen Nicht gestartet
3. Feedback einholen und das Design iterieren. In Bearbeitung
4. Ursprungstest Abschließen
5. Einführung Nicht gestartet

Benachrichtigungstrigger verwenden

Aktivierung über about://flags

Wenn Sie die Notification Triggers API lokal ohne Ursprungstesttoken testen möchten, aktivieren Sie das Flag #enable-experimental-web-platform-features in about://flags.

Funktionserkennung

Sie können herausfinden, ob der Browser Benachrichtigungstrigger unterstützt, indem Sie prüfen, ob das Attribut showTrigger vorhanden ist:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

Benachrichtigung planen

Das Planen einer Benachrichtigung ähnelt der Anzeige einer normalen Push-Benachrichtigung, mit der Ausnahme, dass Sie ein showTrigger-Bedingungsattribut mit einem TimestampTrigger-Objekt als Wert an das options-Objekt der Benachrichtigung übergeben müssen.

const createScheduledNotification = async (tag, title, timestamp) => {
  const registration = await navigator.serviceWorker.getRegistration();
  registration.showNotification(title, {
    tag: tag,
    body: 'This notification was scheduled 30 seconds ago',
    showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
  });
};

Geplante Benachrichtigung abbrechen

Wenn Sie geplante Benachrichtigungen deaktivieren möchten, fordern Sie zuerst über ServiceWorkerRegistration.getNotifications() eine Liste aller Benachrichtigungen an, die einem bestimmten Tag entsprechen. Beachten Sie, dass Sie das Flag includeTriggered übergeben müssen, damit geplante Benachrichtigungen in die Liste aufgenommen werden:

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

Debugging

Über den Benachrichtigungsbereich der Chrome-Entwicklertools können Sie Fehler in Benachrichtigungen beheben. Drücken Sie zum Starten der Fehlerbehebung Ereignisse aufzeichnen Ereignisaufzeichnung starten oder Strg + E (Befehlstaste + E auf einem Mac). Die Chrome-Entwicklertools erfassen alle Benachrichtigungsereignisse, einschließlich geplanter, angezeigter und geschlossener Benachrichtigungen, drei Tage lang, auch wenn die Entwicklertools geschlossen sind.

Im Bereich „Benachrichtigungen“ der Chrome-Entwicklertools, der sich im Bereich „Anwendung“ befindet, wurde ein geplantes Benachrichtigungsereignis protokolliert.
Eine geplante Benachrichtigung.
Ein angezeigtes Benachrichtigungsereignis wurde im Benachrichtigungsbereich der Chrome-Entwicklertools protokolliert.
Eine angezeigte Benachrichtigung.

Demo

In der Demo können Sie Benachrichtigungstrigger in Aktion sehen. Damit können Sie Benachrichtigungen planen, geplante Benachrichtigungen auflisten und abbrechen. Der Quellcode ist auf Glitch verfügbar.

Screenshot der Demo-Web-App „Benachrichtigungstrigger“
Die Demo zu den Triggern für Benachrichtigungen.

Sicherheit und Berechtigungen

Das Chrome-Team hat die Notification Triggers API auf der Grundlage der Grundprinzipien entwickelt und implementiert, die unter Zugriff auf leistungsstarke Webplattformfunktionen steuern, einschließlich Nutzersteuerung, Transparenz und Ergonomie, definiert wurden. Da für diese API Service Worker erforderlich sind, ist auch ein sicherer Kontext erforderlich. Für die Verwendung der API ist dieselbe Berechtigung wie für normale Push-Benachrichtigungen erforderlich.

Nutzersteuerung

Diese API ist nur in Verbindung mit ServiceWorkerRegistration verfügbar. Dies bedeutet, dass alle erforderlichen Daten im selben Kontext gespeichert und automatisch gelöscht werden, wenn der Service Worker oder der Nutzer alle Websitedaten für den Ursprung löscht. Durch das Blockieren von Cookies wird außerdem verhindert, dass Service-Worker in Chrome installiert werden und somit diese API nicht verwendet wird. Benachrichtigungen können vom Nutzer immer in den Websiteeinstellungen für die Website deaktiviert werden.

Transparenz

Im Gegensatz zur Push API ist diese API nicht vom Netzwerk abhängig. Daher benötigen geplante Benachrichtigungen vorab alle erforderlichen Daten, einschließlich Bildressourcen, auf die in den Attributen badge, icon und image verwiesen wird. Das bedeutet, dass der Entwickler eine geplante Benachrichtigung nicht sehen kann und der Service Worker nicht aktiviert wird, bis der Nutzer mit der Benachrichtigung interagiert. Daher ist es derzeit nicht bekannt, wie der Entwickler durch potenziell datenschutzkonforme Ansätze wie die Standortsuche anhand von IP-Adressen Informationen über den Nutzer erhalten kann. Bei diesem Design kann die Funktion auch optional auf Planungsmechanismen des Betriebssystems wie AlarmManager von Android zurückgreifen, um den Akku zu schonen.

Feedback

Das Chrome-Team möchte mehr über Ihre Erfahrungen mit Benachrichtigungsauslösern erfahren.

Informationen zum API-Design

Gibt es etwas an der API, das nicht wie erwartet funktioniert? Oder fehlen Methoden oder Eigenschaften, um Ihre Idee umzusetzen? Haben Sie eine Frage oder einen Kommentar zum Sicherheitsmodell? Melden Sie ein Spezifikationsproblem im GitHub-Repository für Benachrichtigungsauslöser oder ergänzen Sie ein vorhandenes Problem.

Probleme bei der Implementierung?

Haben Sie bei der Implementierung von Chrome einen Fehler gefunden? Oder unterscheidet sich die Implementierung von der Spezifikation? Melden Sie Fehler unter new.crbug.com. Geben Sie dabei so viele Details wie möglich an, führen Sie eine einfache Anleitung zum Reproduzieren aus und setzen Sie für Komponenten UI>Notifications. Mit Glitch lassen sich Fehler schnell und einfach reproduzieren.

Möchten Sie die API verwenden?

Möchten Sie Benachrichtigungs-Trigger auf Ihrer Website verwenden? Ihre öffentliche Unterstützung hilft uns bei der Priorisierung von Funktionen und zeigt anderen Browseranbietern, wie wichtig es ist, sie zu unterstützen. Sende einen Tweet an @ChromiumDev mit dem Hashtag #NotificationTriggers und teile uns mit, wo und wie du es verwendest.

Hilfreiche Links

Danksagungen

Die Benachrichtigungstrigger wurden von Richard Knoll und dem erklärenden von Peter Beverloo mit Beiträgen von Richard implementiert. Die folgenden Personen haben den Artikel gelesen: Joe Medley, Pete LePage sowie Richard und Peter. Hero-Image von Lukas Blazek bei Unsplash.