Interfejs Notification Activates API

Wyzwalacze powiadomień umożliwiają zaplanowanie powiadomień lokalnych, które nie wymagają połączenia sieciowego, dzięki czemu idealnie nadają się do takich zastosowań jak aplikacje kalendarza.

Czym są reguły powiadomień?

Deweloperzy aplikacji internetowej mogą wyświetlać powiadomienia za pomocą interfejsu Web Notification API. Ta funkcja jest często używana w interfejsie API Push do informowania użytkowników o ważnych momentach, takich jak aktualności lub otrzymane wiadomości. Powiadomienia są wyświetlane przez uruchomienie JavaScriptu na urządzeniu użytkownika.

Problem z interfejsem Push API polega na tym, że nie jest on odpowiedni do wywoływania powiadomień, które muszą się pojawiać, gdy zostanie spełniony określony warunek, taki jak godzina lub lokalizacja. Przykładem warunku zależnego od czasu jest powiadomienie z kalendarza, które przypomina Ci o ważnym spotkaniu z szefem o 14:00. Przykładem warunku związanego z lokalizacją jest powiadomienie przypominające o zakupie mleka, gdy jesteś w pobliżu sklepu spożywczego. Połączenie sieciowe i funkcje oszczędzające baterię, takie jak tryb uśpienia, mogą opóźniać dostarczanie powiadomień push.

Wyzwalacze powiadomień rozwiązują ten problem, ponieważ umożliwiają zaplanowanie powiadomień z określeniem ich warunku wyzwalającego. Dzięki temu system operacyjny dostarczy powiadomienie we właściwym czasie, nawet gdy nie ma połączenia z siecią lub urządzenie działa w trybie oszczędzania baterii.

Przykłady zastosowań

Aplikacje Kalendarz mogą używać wyzwalaczy powiadomień zależnych od czasu, aby przypominać użytkownikom o zbliżających się spotkaniach. Domyślnym schematem powiadomień w przypadku aplikacji kalendarza może być wyświetlanie pierwszego powiadomienia Uważaj na godzinę przed spotkaniem, a następnie kolejnego pilniejszego powiadomienia 5 minut przed spotkaniem.

Sieć telewizyjna może przypominać użytkownikom o zbliżającej się dacie rozpoczęcia ich ulubionego programu lub konferencji na żywo.

Witryny, które zmieniają strefę czasową, mogą używać reguł powiadomień opartych na czasie, aby umożliwić użytkownikom planowanie alarmów dla rozmów telefonicznych lub wideo.

Obecny stan,

Step Stan
1. Utwórz wyjaśnienie Zakończono
2. Utwórz początkową wersję roboczą specyfikacji Nie rozpoczęto
3. Zbieraj opinie i ulepszaj projekt. W toku
4. Wersja próbna origin Ukończono
5. Wprowadzenie na rynek Nie rozpoczęto

Jak używać reguł powiadomień

Włączanie przez about://flags

Aby eksperymentować z interfejsem Notification Triggers API lokalnie, bez tokena próbnego origin, włącz flagę #enable-experimental-web-platform-features w about://flags.

Wykrywanie cech

Aby dowiedzieć się, czy przeglądarka obsługuje aktywatory powiadomień, sprawdź, czy istnieje właściwość showTrigger:

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

Planowanie wyświetlania powiadomienia

Planowanie wysyłania powiadomienia przypomina wyświetlanie zwykłego powiadomienia push z tą różnicą, że musisz przekazać właściwość warunku showTrigger z obiektem TimestampTrigger jako wartością obiektu options powiadomienia.

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),
  });
};

Anulowanie zaplanowanego powiadomienia

Aby anulować zaplanowane powiadomienia, najpierw do ServiceWorkerRegistration.getNotifications() poproś o listę wszystkich powiadomień pasujących do określonego tagu. Pamiętaj, że aby zaplanowane powiadomienia znalazły się na liście, musisz przekazać flagę includeTriggered:

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

Debugowanie

Powiadomienia możesz debugować w panelu powiadomień Narzędzi deweloperskich w Chrome. Aby rozpocząć debugowanie, naciśnij Rozpocznij rejestrowanie zdarzeń Zacznij rejestrować zdarzenia lub Control + E (Command + E na Macu). Narzędzia deweloperskie w Chrome rejestrują wszystkie zdarzenia powiadomień, w tym zaplanowane, wyświetlone i zamknięte powiadomienia, przez 3 dni, nawet gdy są one zamknięte.

Zaplanowane zdarzenie powiadomienia zostało zarejestrowane w panelu Powiadomienia w Narzędziach deweloperskich Chrome, który znajduje się w panelu Aplikacje.
Zaplanowane powiadomienie.
Wyświetlone zdarzenie powiadomienia zostało zarejestrowane w panelu Powiadomienia w Narzędziach deweloperskich w Chrome.
Wyświetlone powiadomienie.

Pokaz

Działanie reguł powiadomień możesz zobaczyć w wersji demonstracyjnej. Pozwala ona planować powiadomienia i je anulować. Kod źródłowy jest dostępny w Glitch.

Zrzut ekranu przedstawiający demonstracyjną aplikację internetową wyzwalaczy powiadomień.
Prezentacja wyzwalaczy powiadomień.

Bezpieczeństwo i uprawnienia

Zespół Chrome zaprojektował i wdrożył interfejs Notification Triggers API zgodnie z podstawowymi zasadami określonymi w artykule Kontrola dostępu do zaawansowanych funkcji platformy internetowej, takimi jak kontrola użytkowników, przejrzystość i ergonomia. Ten interfejs API wymaga mechanizmów Service Worker, dlatego wymaga też bezpiecznego kontekstu. Korzystanie z interfejsu API wymaga takich samych uprawnień jak zwykłe powiadomienia push.

Kontrola użytkowników

Ten interfejs API jest dostępny tylko w kontekście ServiceWorkerRegistration. Oznacza to, że wszystkie wymagane dane są przechowywane w tym samym kontekście i są automatycznie usuwane, gdy skrypt service worker zostanie usunięty lub użytkownik usunie wszystkie dane witryn z danego źródła. Blokowanie plików cookie uniemożliwia też instalowanie w Chrome mechanizmów Service Worker, a tym samym korzystanie z tego interfejsu API. Użytkownik może wyłączyć powiadomienia dla danej witryny w ustawieniach witryny.

Przejrzystość

W przeciwieństwie do interfejsu Push API ten interfejs API nie zależy od sieci, co oznacza, że zaplanowane powiadomienia potrzebują z góry wszystkich wymaganych danych, w tym zasobów obrazu, do których odwołują się atrybuty badge, icon i image. Oznacza to, że wyświetlenie zaplanowanego powiadomienia nie jest możliwe dla dewelopera i nie obejmuje wybudzenia skryptu service worker, dopóki użytkownik nie wejdzie z nim w interakcję. W związku z tym nie ma obecnie znanego sposobu, w jaki deweloper mógłby uzyskać informacje o użytkowniku za pomocą metod potencjalnie naruszających jego prywatność, np. wyszukiwania geolokalizacji na podstawie adresu IP. Ta funkcja umożliwia też opcjonalnie korzystanie z mechanizmów planowania udostępnianych przez system operacyjny, taki jak AlarmManager na Androida, co pomaga oszczędzać baterię.

Prześlij opinię

Zespół Chrome chce poznać Twoją opinię o regułach powiadomień.

Opowiedz nam o konstrukcji interfejsu API

Czy jest coś, co nie działa w interfejsie API zgodnie z oczekiwaniami? A może brakuje Ci metod lub właściwości, których potrzebujesz, by zrealizować swój pomysł? Masz pytanie lub komentarz na temat modelu zabezpieczeń? Zgłoś problem ze specyfikacją w repozytorium GitHub aktywującym powiadomienia lub dodaj uwagi do istniejącego problemu.

Problem z implementacją?

Czy wystąpił błąd z implementacją Chrome? Czy implementacja różni się od specyfikacji? Zgłoś błąd na stronie new.crbug.com. Podaj jak najwięcej szczegółów, proste instrukcje odtwarzania i ustaw Komponenty na UI>Notifications. Glitch świetnie nadaje się do szybkiego i łatwego odtworzenia błędów.

Planujesz korzystać z interfejsu API?

Zastanawiasz się, jak wdrożyć w swojej witrynie reguły powiadomień? Twoje publiczne wsparcie pomaga nam ustalać priorytety funkcji i pokazywać innym dostawcom przeglądarek, jak ważne jest, aby wspierać te funkcje. Wyślij tweeta na adres @ChromiumDev, używając hashtagu #NotificationTriggers, i daj nam znać, gdzie i jak go używasz.

Przydatne linki

Podziękowania

Aktywatory powiadomień zostały wdrożone przez Richarda Knolla i wyjaśnienie, którego autorem jest Peter Beverloo, we współpracy z Richardem. Artykuł zarecenzowały następujące osoby: Joe Medley, Pete LePage, a także Richard i Peter. Baner powitalny: Lukas Blazek, Unsplash.