Wyzwalacze powiadomień umożliwiają planowanie powiadomień lokalnych, które nie wymagają połączenia sieciowego, dzięki czemu idealnie nadają się do zastosowań takich jak aplikacje kalendarza.
Co to są aktywatory powiadomień?
Programiści stron internetowych mogą wyświetlać powiadomienia za pomocą interfejsu Web Notification API. Ta funkcja jest często wykorzystywana w połączeniu z interfejsem API Push do informowania użytkowników o ograniczonych czasowo informacjach, takich jak aktualności lub otrzymane wiadomości. Powiadomienia są wyświetlane po uruchomieniu JavaScriptu na urządzeniu użytkownika.
Problem z interfejsem Push API polega na tym, że nie jest on niezawodne w przypadku aktywowania powiadomień, które muszą być wyświetlane, gdy spełniony jest określony warunek, taki jak czas lub lokalizacja. Przykładem warunku zależnego od czasu jest powiadomienie z kalendarza, które przypomina o ważnym spotkaniu z szefem o godzinie 14:00. Przykładem warunku zależnego od lokalizacji może być powiadomienie przypominające o konieczności zakupu mleka, gdy znajdujesz się w pobliżu sklepu spożywczego. Połączenia sieciowe lub funkcje oszczędzające baterię, takie jak tryb uśpienia, mogą opóźniać dostarczanie powiadomień push.
Wyzwalacze powiadomień pozwalają rozwiązać ten problem, umożliwiając zaplanowanie wyświetlania powiadomień z wyprzedzeniem. Dzięki temu system operacyjny wyśle je w odpowiednim momencie, nawet jeśli nie ma połączenia z siecią lub urządzenie działa w trybie oszczędzania baterii.
Przypadki użycia
Aplikacje do obsługi kalendarza mogą wykorzystywać wyzwalacze powiadomień zależne od czasu, aby przypominać użytkownikowi o nadchodzących spotkaniach. Domyślnym schematem powiadomień w przypadku aplikacji kalendarzowej może być pierwsze powiadomienie z ostrzeżeniem na godzinę przed spotkaniem, a kolejne na pięć minut przed spotkaniem.
Sieć telewizyjna może przypominać użytkownikom, że zbliża się transmisja ich ulubionego serialu lub transmisji na żywo z konferencji.
Witryny do zmiany strefy czasowej mogą stosować reguły wyświetlania powiadomień zależne od czasu, aby użytkownicy mogli planować alarmy dla rozmów telefonicznych lub wideo.
Obecny stan,
Step | Stan |
---|---|
1. Utwórz wyjaśnienie | Zakończono |
2. Utwórz wstępną wersję roboczą specyfikacji | Nie rozpoczęto |
3. Zbieraj opinie i ponownie ulepszaj projekt. | W toku |
4. Testowanie origin | Odpowiedź była wyczerpująca |
5. Uruchom | Nie rozpoczęto |
Jak używać reguł powiadomień
Włączanie za pomocą about://flags
Aby poeksperymentować z interfejsem Notification Triggers API lokalnie bez tokena próbnego origin, włącz flagę #enable-experimental-web-platform-features
w about://flags
.
Wykrywanie funkcji
Aby dowiedzieć się, czy przeglądarka obsługuje reguły powiadomień, sprawdź, czy istnieje właściwość showTrigger
:
if ('showTrigger' in Notification.prototype) {
/* Notification Triggers supported */
}
Planowanie wyświetlania powiadomienia
Planowanie powiadomień przypomina wyświetlanie zwykłego powiadomienia push, z tą różnicą, że trzeba 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 poproś o listę wszystkich powiadomień, które pasują do danego tagu, do ServiceWorkerRegistration.getNotifications()
. Pamiętaj, że aby pojawić się na liście zaplanowane powiadomienia, musisz zadeklarować 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ń w Narzędziach deweloperskich w Chrome. Aby rozpocząć debugowanie, naciśnij Rozpocznij rejestrowanie zdarzeń lub Control + E (Command + E na Macu). Narzędzia deweloperskie w Chrome rejestrują wszystkie zdarzenia dotyczące powiadomień, w tym zaplanowane, wyświetlane i zamknięte powiadomienia, przez 3 dni, nawet po ich zamknięciu.
Wersja demonstracyjna
Aktywatory powiadomień możesz zobaczyć w prezentacji. Dzięki temu możesz planować powiadomienia, wyświetlać zaplanowane powiadomienia oraz je anulować. Kod źródłowy jest dostępny na stronie Glitch.
Zabezpieczenia i uprawnienia
Zespół Chrome zaprojektował i wdrożył interfejs Notification Triggers API zgodnie z podstawowymi zasadami określonymi w artykule Kontrolowanie dostępu do zaawansowanych funkcji platformy internetowej, w tym dotyczących kontroli użytkownika, przejrzystości działania i ergonomii. Ten interfejs API wymaga mechanizmów Service Worker, dlatego wymaga też bezpiecznego kontekstu. Korzystanie z interfejsu API wymaga tych samych uprawnień co zwykłe powiadomienia push.
Kontrola użytkowników
Ten interfejs API jest dostępny tylko w kontekście obiektu 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 witryny dotyczące źródła. Blokowanie plików cookie uniemożliwia też instalowanie skryptów service worker w Chrome, a tym samym używanie tego interfejsu API. Użytkownik zawsze może wyłączyć powiadomienia dotyczące 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ą wcześniej wszystkich wymaganych danych, w tym zasobów obrazu, do których odwołują się atrybuty badge
, icon
i image
. Oznacza to, że deweloper nie może obserwować zaplanowanego powiadomienia i nie wymaga wybudzania skryptu service worker, dopóki użytkownik nie wejdzie z nim w interakcję.
W związku z tym obecnie nie wiadomo, jak deweloper mógłby uzyskać informacje o użytkowniku za pomocą metod potencjalnie naruszających prywatność, takich jak wyszukiwanie geolokalizacji pod kątem adresów IP. Umożliwia to też opcjonalnie korzystanie z mechanizmów planowania dostępnych w systemie operacyjnym, np. AlarmManager
Androida, co pomaga oszczędzać baterię.
Prześlij opinię
Zespół Chrome chce poznać Twoją opinię o regułach wyświetlania powiadomień.
Opowiedz nam o konstrukcji interfejsu API
Czy jest coś, co nie działa w interfejsie API zgodnie z oczekiwaniami? A może brakuje metod lub właściwości, które potrzebujesz do realizacji pomysłu? Masz pytanie lub komentarz na temat modelu zabezpieczeń? Zgłoś problem ze specyfikacją w repozytorium powiadomień wyzwalaczy powiadomień na GitHubie lub dodaj swoje uwagi do istniejącego problemu.
Problem z implementacją?
Czy wystąpił błąd w implementacji Chrome? A może implementacja różni się od specyfikacji?
Zgłoś błąd na stronie new.crbug.com. Podaj jak najwięcej szczegółów i proste instrukcje odtwarzania oraz ustaw Komponenty na UI>Notifications
. Funkcja Glitch świetnie nadaje się
do szybkiego i łatwego odtwarzania błędów.
Planujesz korzystać z interfejsu API?
Planujesz zastosować w swojej witrynie reguły wyświetlania powiadomień? Twoja publiczna pomoc pomoże nam nadać priorytet funkcjom i pokazać innym dostawcom przeglądarek, jak ważne jest ich wsparcie. Wyślij tweeta na adres @ChromiumDev, używając hashtagu #NotificationTriggers
, i daj nam znać, gdzie i jak go używasz.
Przydatne linki
- Wyjaśnienie publiczne
- Wersja demonstracyjna aktywatorów powiadomień | Źródło demonstracyjne reguł powiadomień
- Śledzenie błędów
- Wpis na ChromeStatus.com
- Komponent migania:
UI>Notifications
Podziękowania
Aktywatory powiadomień zostały wdrożone przez Richarda Knolla i Petera Beverloo przy pomocy Richarda. Artykuł przeczytały następujące osoby: Joe Medley, Pete LePage oraz Richard i Peter. Baner powitalny: Lukas Blazek w serwisie Unsplash.