Ogólne#

Notifications#

W tym miejscu umieszczam powtarzające się specyficzne pojęcia i algorytmy w dziale Notifications.

Pojęcia#

list-of-pending-notifications

list-of-active-notifications

Aplikacja kliencka musi utrzymywać listę oczekujących powiadomień # (list of pending notifications) oraz listę aktywnych powiadomień # (list of active notifications).

Zawsze, gdy lista oczekujących powiadomień nie jest pusta, to aplikacja kliencka musi czekać i monitorować zmiany w dostępnej przestrzeni dla powiadomień na urządzeniu.

Kiedy dostępna przestrzeń wyświetlania zmienia się na urządzeniu w taki sposób, że nowe powiadomienie może być wyświetlone, na przykład z powodu odwołania wcześniejszego powiadomienia, to aplikacja kliencka powinna uruchomić kroki wyświetlenia dla pierwszego powiadomienia na liście oczekujących powiadomień a następnie usunąć je z listy oczekujących powiadomień.

garbage collection

Specyfikacja precyzuje, że obiekt Notification nie może podlegać mechanizmowi GC w chwili, gdy jego odpowiadające powiadomienie znajduje się na liście oczekujących powiadomień lub liście aktywnych powiadomień i obiekt Notification o którym mowa ma zarejestrowany nasłuch zdarzenia z typem click, show, error lub close.

Algorytmy#

show steps

Krokami pokazania # (show steps) dla powiadomienia notification są:

  1. Jeśli zezwolenie dla pochodzenia w notification nie jest łańcuchem znakowym "granted" to przerwij każde trwające pobieranie dla URL ikony w notification, a następnie dla każdego (for each) obiektu Notification reprezentującego notification kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia error na obiekcie Notification i pomiń kolejne kroki.
  2. Jeśli istnieje powiadomienie na liście oczekujących powiadomień lub liście aktywnych powiadomień, którego etykieta nie jest pustym łańcuchem znakowym i jest równa etykiecie w notification, i którego pochodzenie jest równe pochodzeniu w notification to uruchom kroki zastąpienia dla tego powiadomienia przez notification i pomiń kolejne kroki.
  3. Jeśli urządzenie pozwala powiadomieniom na natychmiastowe wyświetlanie bez ograniczeń co do liczby równoczesnych powiadomień to uruchom kroki wyświetlenia dla notification i pomiń kolejne kroki.
  4. Jeśli urządzenie posiada ograniczenia co do liczby równoczesnych powiadomień to albo natychmiast wywołaj platformę powiadomień, która natywnie wspiera kolejkowanie, albo dodaj notification do listy oczekujących powiadomień.

activate steps

Kiedy powiadomienie zostało aktywowane przez użytkownika, przy założeniu że podstawowa platforma powiadomień obsługuje aktywację, to krokami aktywacji # (activate steps) dla powiadomienia notification są:

  1. Dla każdego (for each) obiektu Notification reprezentującego notification kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia click na obiekcie Notification.

    W całej platformie webowej "aktywacja" jest świadomie (chociaż mylnie) nazywana "kliknięciem".

    Aplikacje klienckie są usilnie zachęcane do automatycznego wywoływania metody windows.focus() z poziomu nasłuchu zdarzenia dla zdarzenia typu click w celu ustawienia zogniskowania na spokrewnionym z powiadomieniem kontekście przeglądania.

close steps

Kiedy powiadomienie zostało zamknięte, albo przez podstawową platformę powiadomień albo przez użytkownika, to krokami zamknięcia # (close steps) dla powiadomienia notification są:

  1. Jeśli notification nie znajduje się ani na liście oczekujących powiadomień ani na liście aktywnych powiadomień to pomiń kolejne kroki.
  2. Usuń notification zarówno z listy oczekujących powiadomień jak i listy aktywnych powiadomień, i dla każdego (for each) obiektu Notification reprezentującego notification kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia close na obiekcie Notification.

display steps

Krokami wyświetlenia # (display steps) dla powiadomienia notification są:

  1. Jeśli platforma powiadomień obsługuje ikony, URL ikony w notification jest ustawiony i wskazywana ikona nie została jeszcze pobrana, to pobierz ją i poczekaj na odpowiedź.

    Jeśli typem w odpowiedzi wewnętrznej dla odpowiedzi jest default to spróbuj zdekodować zasób jako obraz.

    Kiedy pobieranie zostanie zakończone i format obrazu jest obsługiwany, ustaw obraz ikony dla notification na zdekodowany zasób. W przeciwnym razie notification nie posiada obrazu ikony.

  2. Wyświetl notification na urządzeniu (np. poprzez wywołanie odpowiedniej platformy powiadomień).
  3. Jeśli wyświetlanie zawiedzie (np. platforma powiadomień zgłasza błąd), to dla każdego (for each) obiektu Notification reprezentującego notification kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia error na obiekcie Notification i pomiń kolejne kroki.
  4. Dodaj notification do listy aktywnych powiadomień.
  5. Dla każdego (for each) obiektu Notification reprezentującego notification kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia show na obiekcie Notification.

replace steps

Krokami zastąpienia # (replace steps) dla starego powiadomienia old przez nowe powiadomienie new są:

  1. Jeśli platforma powiadomień obsługuje ikony, URL ikony w new jest ustawiony i wskazywana ikona nie została jeszcze pobrana, to pobierz ją i poczekaj na odpowiedź.

    Jeśli typem w odpowiedzi wewnętrznej dla odpowiedzi jest default to spróbuj zdekodować zasób jako obraz.

    Kiedy pobieranie zostanie zakończone i format obrazu jest obsługiwany, ustaw obraz ikony dla new na zdekodowany zasób. W przeciwnym razie new nie posiada obrazu ikony.

  2. Jeśli old znajduje się na liście oczekujących powiadomień to zastąp old przez new na tej samej pozycji w liście oczekujących powiadomień, i dla każdego (for each) obiektu Notification reprezentującego old kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia close na obiekcie Notification i pomiń kolejne kroki.
  3. W przeciwnym razie zastąp old przez new na tej samej pozycji w liście aktywnych powiadomień, następnie dla każdego (for each) obiektu Notification reprezentującego old kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia close na obiekcie Notification, a następnie dla każdego (for each) obiektu Notification reprezentującego new kolejkuj zadanie dla odpalenia zdarzenia z nazwą zdarzenia show na obiekcie Notification.

    Jeśli platforma powiadomień nie obsługuje zastępowania to wymóg ten można zapewnić poprzez uruchomienie kroków zamknięcia dla old a następnie uruchomienie kroków wyświetlenia dla new.

    Platformy powiadomień usilnie zachęca się do wspierania natywnego zastępowania. To jest o wiele subtelniejsze.

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Ogólne (H1) Notifications (H2) Pojęcia (H3) list-of-pending-notifications (H4) list-of-active-notifications (H4) garbage collection (H4) Algorytmy (H3) show steps (H4) activate steps (H4) close steps (H4) display steps (H4) replace steps (H4)