Notification Category: co to jest, jakie kategorie istnieją i jak działają w iOS

Autor: IT Sectr Opublikowano: 2026-03-20 Czas czytania: 8 min

Notification Category (kategoria powiadomień) to mechanizm iOS do grupowania push-ów według typu i przypisywania im konfigurowalnych akcji. Kategoria określa, które przyciski są wyświetlane przy 3D Touch lub długim naciśnięciu powiadomienia, oraz jak system przetwarza przychodzące powiadomienia tego typu. Według Apple Developer Documentation, UNNotificationCategory jest rejestrowany w UNUserNotificationCenter i łączony z powiadomieniem poprzez pole category w APNS-ładunku.

Najważniejsze

  • Notification Category — mechanizm iOS do klasyfikacji push-ów i dodawania do nich akcji
  • UNNotificationCategory — klasa rejestrująca kategorię z zestawem UNNotificationAction
  • Akcje — przyciski pod powiadomieniem: UNTextInputAction do wprowadzania tekstu, UNNotificationAction do dotknięcia
  • Połączenie — kategoria jest wskazywana w APNS-ładunku przez klucz category w słowniku aps
  • Różnica od Androida — iOS Category zarządza akcjami, a Android Channel — ważnością i dźwiękiem

Co to jest Notification Category w iOS?

Notification Category to funkcja iOS (od wersji 8.0), która pozwala programiście klasyfikować powiadomienia push i dodawać do nich interaktywne akcje. Gdy użytkownik otrzymuje powiadomienie i naciska je z siłą (3D Touch) lub długo przytrzymuje, pojawiają się przyciski określone przez kategorię.

Kategoria jest rejestrowana przez obiekt UNNotificationCategory, który zawiera identyfikator, tablicę akcji i opcjonalne parametry wyświetlania. System używa identyfikatora kategorii z APNS-ładunku do wyszukania zarejestrowanej kategorii i wyświetlenia odpowiednich akcji.

W przeciwieństwie do Android Notification Channel, iOS Category nie zarządza ważnością, dźwiękiem ani wibracją. Jej jedynym zadaniem jest dostarczenie interaktywnych możliwości dla powiadomienia: przycisków odpowiedzi, potwierdzenia, anulowania lub wprowadzania tekstu.

Obowiązkowość kategorii

Kategorie nie są obowiązkowe do wyświetlania powiadomień push na iOS. Powiadomienie pojawi się w każdym przypadku — z przyciskami, jeśli kategoria jest zarejestrowana, lub bez nich. Kategorie są potrzebne tylko do dodawania interaktywności do powiadomień.

Jak działają kategorie powiadomień?

Mechanizm kategorii składa się z czterech etapów: rejestracja kategorii na kliencie, wysłanie APNS-ładunku z kategorią, rozpoznanie kategorii przez system i przetworzenie akcji użytkownika.

  • Rejestracja — aplikacja tworzy UNNotificationCategory z tablicą akcji i rejestruje w UNUserNotificationCenter
  • Wysyłanie — serwer dołącza do APNS-ładunku klucz category z wartością zgodną z identyfikatorem kategorii
  • Wyświetlanie — iOS pokazuje powiadomienie, a przy force touch wyświetla przyciski przypisane do kategorii
  • Przetwarzanie — użytkownik naciska przycisk, uruchamia się UNUserNotificationCenterDelegate.didReceive response

Akcje w kategorii mogą być dwóch typów: foreground (otwierają aplikację) i background(wykonywane w tle). Dla akcji w tle aplikacja otrzymuje ograniczony czas (około 30 sekund) na przetworzenie w UNNotificationActionHandler.

Opcje przy rejestracji kategorii

UNNotificationCategory obsługuje kilka opcji przez parametr options: customDismissAction — otrzymywanie zdarzenia przy przesunięciu powiadomienia, allowInCarPlay — wyświetlanie akcji w CarPlay, hiddenPreviewsBodyPlaceholder — niestandardowy tekst dla ukrytych podglądów. Prawidłowa konfiguracja opcji poprawia doświadczenie użytkownika na różnych urządzeniach Apple.

UNNotificationAction: typy akcji

iOS udostępnia dwa typy akcji dla kategorii powiadomień. Każdy typ ma swoje przeznaczenie i sposób interakcji z użytkownikiem.

TypKlasaOpisPrzykład
Prosta akcjaUNNotificationActionPrzycisk z tytułem i opcjami (destructive, foreground, authenticationRequired)„Usuń”, „Zobacz”
Wprowadzanie tekstuUNTextInputActionPrzycisk otwierający pole wprowadzania tekstu z podpowiedzią„Odpowiedz”, „Skomentuj”

UNTextInputAction — unikalna możliwość iOS. Po naciśnięciu przycisku „Odpowiedz” system wyświetla pole tekstowe, w które użytkownik wprowadza odpowiedź. Wprowadzony tekst jest przekazywany do delegata wraz z identyfikatorem akcji. Pozwala to na szybkie odpowiedzi bez otwierania aplikacji.

Opcje akcji: options.authenticationRequired — wymaga odblokowania urządzenia, options.destructive — wyróżnia przycisk na czerwono (dla niebezpiecznych akcji), options.foreground — otwiera aplikację po naciśnięciu.

Konfiguracja kategorii w kodzie iOS

Kategorie są rejestrowane przy uruchomieniu aplikacji, zazwyczaj w metodzie didFinishLaunchingWithOptions. Rejestracja odbywa się przez UNUserNotificationCenter po uzyskaniu zgody na powiadomienia. Kategorie można aktualizować przy każdym uruchomieniu — stare wersje są zastępowane nowymi.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Odpowiedz",
            options: [.foreground],
            textInputButtonTitle: "Wyślij",
            textInputPlaceholder: "Wpisz wiadomość..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "Usuń",
            options: [.destructive]
        )

        let messageCategory = UNNotificationCategory(
            identifier: "message",
            actions: [replyAction, deleteAction],
            intentIdentifiers: [],
            options: [.customDismissAction]
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([messageCategory])
    }

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        UNUserNotificationCenter.current().delegate = self
        registerNotificationCategories()
        return true
    }
}

Po rejestracji kategorii każde powiadomienie z category = „message” w APNS-ładunku będzie wyświetlać przyciski „Odpowiedz” i „Usuń”. Obsługa naciśnięć odbywa się w userNotificationCenter:didReceive response, gdzie actionIdentifier określa, który przycisk został naciśnięty.

Obsługa naciśnięcia w delegacie

Gdy użytkownik naciśnie przycisk kategorii, iOS wywołuje delegata UNUserNotificationCenterDelegate z obiektem UNNotificationResponse. W response.actionIdentifier znajduje się identyfikator naciśniętego przycisku, a w response.notification.request.content.userInfo — niestandardowe dane z APNS-ładunku. Dla UNTextInputAction dodatkowo dostępny jest response.userText z tekstem wprowadzonym przez użytkownika.

Różnice od kanałów Androida

Programiści znający Android Notification Channels często mylą je z iOS Notification Categories. Mimo podobnej nazwy, mechanizmy te rozwiązują różne zadania i działają inaczej.

  • Przeznaczenie — Android Channels zarządzają ważnością i widocznością powiadomień; iOS Categories — interaktywnymi akcjami
  • Obowiązkowość — Android Channel jest obowiązkowy do wyświetlenia powiadomienia; iOS Category jest opcjonalna
  • Zarządzanie przez użytkownika — Android użytkownik konfiguruje kanały w ustawieniach systemowych; iOS kategorie nie są widoczne dla użytkownika bezpośrednio
  • Grupowanie — Android Channels można łączyć w grupy (ChannelGroup); iOS Categories nie są grupowane

Na obu platformach można łączyć oba mechanizmy: w Android powiadomienie może należeć do kanału z akcjami z NotificationCompat, a w iOS kategoria uzupełnia kanały, które w iOS nazywane są thread-id i służą do grupowania powiadomień w centrum powiadomień.

APNS-ładunek z kategorią

Aby powiadomienie wyświetlało przyciski kategorii, serwer musi dołączyć klucz category w APNS-ładunku. Bez tego klucza system nie będzie wiedział, którą kategorię zastosować.

json
{
    "aps": {
        "alert": {
            "title": "Nowa wiadomość",
            "body": "Anna: Cześć! Jak się masz?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

Klucz category musi dokładnie odpowiadać identyfikatorowi zarejestrowanemu przez setNotificationCategories na kliencie. Wielkość liter ma znaczenie — „message” i „Message” są uważane za różne kategorie. Jeśli kategoria nie zostanie znaleziona, powiadomienie pojawi się bez przycisków, bez błędów w logach.

Obsługa nieznanej kategorii

Jeśli serwer wysłał powiadomienie z category, która nie jest zarejestrowana na kliencie, iOS ignoruje kategorię i wyświetla powiadomienie bez przycisków. Błąd nie jest logowany, a aplikacja nie dowiaduje się o niezgodności. Zaleca się synchronizowanie listy kategorii między serwerem a klientem poprzez plik konfiguracyjny i sprawdzanie ich przy każdej aktualizacji aplikacji.

Wzorce projektowania kategorii

Przy projektowaniu kategorii powiadomień iOS stosuj zasadę jedna kategoria — jeden scenariusz. Każda kategoria powinna odpowiadać konkretnemu typowi interakcji: odpowiedź na wiadomość, potwierdzenie działania, odrzucenie żądania. Nie mieszaj różnych scenariuszy w jednej kategorii — dezorientuje to użytkownika i komplikuje obsługę w delegacie.

Używaj UNTextInputAction do scenariuszy, w których użytkownik musi wprowadzić tekst bez otwierania aplikacji: odpowiedzi w komunikatorach, komentarze, szybkie notatki. Akcje tekstowe zwiększają zaangażowanie — użytkownik wykonuje znaczącą akcję w 2 dotknięcia zamiast 5+ w otwartej aplikacji.

Dla niebezpiecznych akcji (usuwanie, blokowanie) używaj opcji destructive. iOS wyróżni te przyciski na czerwono, ostrzegając użytkownika o nieodwracalności działania. Dla akcji wymagających odblokowania urządzenia (przeglądanie danych osobowych) ustaw authenticationRequired — system poprosi o Face ID lub hasło przed wykonaniem.

Testuj kategorie na różnych urządzeniach: na iPhonie z 3D Touch, na iPhonie bez 3D Touch (długie naciśnięcie), na iPadzie i na Macu. Zachowanie kategorii może się nieznacznie różnić na różnych platformach Apple. Szczególną uwagę zwróć na CarPlay: przyciski kategorii są wyświetlane na ekranie samochodu, ale wprowadzanie tekstu nie jest dostępne, więc UNTextInputAction jest automatycznie ukrywane w CarPlay. W watchOS kategorie nie są obsługiwane — wszystkie powiadomienia są wyświetlane bez przycisków akcji.

Często zadawane pytania

Ile kategorii można zarejestrować w iOS?

Ograniczeń nie ma — iOS nie ustawia limitu liczby UNNotificationCategory. W praktyce zaleca się jednak nie więcej niż 10–15 kategorii, aby nie komplikować obsługi w delegacie. Każda kategoria może zawierać do 4 akcji (przycisków). Więcej niż 4 akcje są ignorowane przez system.

Jak obsłużyć naciśnięcie przycisku kategorii?

Zaimplementuj delegata UNUserNotificationCenterDelegate i metodę didReceive response. Sprawdź response.actionIdentifier: UNNotificationDismissActionIdentifier — przesunięcie usunięcia, UNNotificationDefaultActionIdentifier — dotknięcie treści, lub własny identyfikator przycisku. Dla przycisków tekstowych tekst jest dostępny przez response.userText.

Czym category różni się od thread-id?

Category — określa interaktywne akcje (przyciski) dla powiadomienia. Thread-id — grupuje powiadomienia w Centrum Powiadomień według tematów. Oba klucze są podawane w APNS-ładunku. Category i thread-id nie są powiązane: powiadomienie może mieć kategorię bez thread-id i odwrotnie.

Czy kategorie działają na macOS?

Tak, UNNotificationCategory jest obsługiwany na macOS 10.14+ (Mojave) w aplikacjach używających UserNotifications framework. Zachowanie kategorii na macOS jest podobne do iOS: po naciśnięciu powiadomienia wyświetlane są przyciski, obsługa odbywa się przez UNUserNotificationCenterDelegate.

Czy trzeba aktualizować kategorie przy każdym uruchomieniu?

Zaleca się rejestrowanie kategorii przy każdym uruchomieniu aplikacji przez setNotificationCategories. System zastępuje stary zestaw kategorii nowym przy każdym wywołaniu. Jeśli nie aktualizujesz, kategorie pozostają między uruchomieniami, ale przy zmianie kodu stare kategorie mogą nie pasować do nowych.

Podsumowanie

  • Notification Category — mechanizm iOS do dodawania interaktywnych akcji do powiadomień push
  • UNNotificationCategory — klasa łącząca identyfikator, tablicę UNNotificationAction i opcje
  • UNTextInputAction — akcja z polem wprowadzania tekstu do szybkich odpowiedzi bez otwierania aplikacji
  • APNS-ładunek — klucz category w słowniku aps łączy powiadomienie z zarejestrowaną kategorią
  • Do 4 akcji — maksymalna liczba przycisków na kategorię, reszta jest ignorowana przez system
  • Opcje akcji — foreground (otwarcie aplikacji), destructive (czerwony przycisk), authenticationRequired
  • Różnica od Androida — iOS Category odpowiada za akcje, Android Channel — za ważność i dźwięk

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również