Korzystanie z interfejsu API powiadomień

Ernest Delgado
Ernest Delgado

Wprowadzenie

Interfejs Notifications API umożliwia wyświetlanie użytkownikowi powiadomień o określonych zdarzeniach, zarówno pasywnie (nowe e-maile, tweety lub wydarzenia w kalendarzu), jak i w odpowiedzi na interakcje użytkownika, niezależnie od tego, która karta jest aktywna. Istnieje specyfikacja w wersji roboczej, ale nie jest ona obecnie częścią żadnego standardu.

Aby wdrożyć powiadomienia w kilka minut, wykonaj te proste czynności:

Krok 1. Sprawdź, czy interfejs Notifications API jest obsługiwany

Sprawdzamy, czy webkitNotifications jest obsługiwany. Nazwa webkitNotifications wynika z tego, że jest to część projektu specyfikacji. W ostatecznej wersji specyfikacji będzie zamiast niej funkcja notifications().

// check for notifications support
// you can omit the 'window' keyword
if (window.webkitNotifications) {
console.log("Notifications are supported!");
}
else {
console.log("Notifications are not supported for this Browser/OS version yet.");
}

Krok 2. Zezwól użytkownikowi na przyznanie witrynie uprawnień do wyświetlania powiadomień

Każdy z wymienionych przez nas konstruktorów zgłosi błąd bezpieczeństwa, jeśli użytkownik nie przyzna ręcznie witrynie uprawnień do wyświetlania powiadomień. Aby obsłużyć wyjątek, możesz użyć instrukcji try-catch, ale możesz też użyć metody checkPermission.

document.querySelector('#show_button').addEventListener('click', function() {
if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
// function defined in step 2
window.webkitNotifications.createNotification(
    'icon.png', 'Notification Title', 'Notification content...');
} else {
window.webkitNotifications.requestPermission();
}
}, false);

Jeśli aplikacja internetowa nie ma uprawnień do wyświetlania powiadomień, metoda requestPermission wyświetli pasek informacyjny:

Pasek informacji o uprawnieniach do wyświetlania powiadomień w Google Chrome
Pasek informacji o uprawnieniach do powiadomień w Google Chrome.

Pamiętaj jednak, że metoda requestPermission działa tylko w procedurach obsługi zdarzeń wywoływanych przez działanie użytkownika, np. zdarzenia myszy lub klawiatury, aby uniknąć niechcianych pasków informacyjnych. W tym przypadku działaniem użytkownika jest kliknięcie przycisku o identyfikatorze „show_button”. Powyższy fragment kodu nigdy nie zadziała, jeśli użytkownik nie kliknie wyraźnie przycisku lub linku, który w pewnym momencie wywoła requestPermission.

Krok 3. Dołącz odbiorniki i inne działania

document.querySelector('#show_button').addEventListener('click', function() {
  if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
    // function defined in step 2
    notification_test = window.webkitNotifications.createNotification(
      'icon.png', 'Notification Title', 'Notification content...');
    notification_test.ondisplay = function() { ... do something ... };
    notification_test.onclose = function() { ... do something else ... };
    notification_test.show();
  } else {
    window.webkitNotifications.requestPermission();
  }
}, false);

W tym momencie możesz chcieć zamknąć wszystkie te zdarzenia i działania w klasie powiadomień, aby kod był bardziej przejrzysty, ale to wykracza poza zakres tego samouczka.