Notification Category: ce este, ce categorii există și cum funcționează în iOS

Autor: IT Sectr Publicat: 2026-03-20 Timp de citire: 8 min

Notification Category (categoria de notificări) este un mecanism iOS pentru gruparea notificărilor push după tip și atașarea de acțiuni personalizabile. Categoria determină ce butoane sunt afișate la 3D Touch sau apăsarea lungă pe o notificare, precum și modul în care sistemul procesează notificările primite de acest tip. Conform Apple Developer Documentation, UNNotificationCategory este înregistrat în UNUserNotificationCenter și se leagă de notificare prin câmpul category din payload-ul APNS.

Puncte cheie

  • Notification Category — mecanism iOS pentru clasificarea notificărilor push și adăugarea de acțiuni
  • UNNotificationCategory — clasa care înregistrează categoria cu un set de UNNotificationAction
  • Acțiuni — butoane sub notificare: UNTextInputAction pentru introducere text, UNNotificationAction pentru atingere
  • Legătura — categoria este specificată în payload-ul APNS prin cheia category din dicționarul aps
  • Diferența față de Android — iOS Category gestionează acțiunile, iar Android Channel — importanța și sunetul

Ce este Notification Category în iOS?

Notification Category este o funcție iOS (din versiunea 8.0) care permite dezvoltatorului să clasifice notificările push și să adauge acțiuni interactive. Când utilizatorul primește o notificare și apasă cu forță (3D Touch) sau face o apăsare lungă, apar butoanele definite de categorie.

Categoria se înregistrează prin obiectul UNNotificationCategory, care conține un identificator, un tablou de acțiuni și parametri opționali de afișare. Sistemul folosește identificatorul categoriei din payload-ul APNS pentru a găsi categoria înregistrată și a afișa acțiunile corespunzătoare.

Spre deosebire de Android Notification Channel, iOS Category nu gestionează importanța, sunetul sau vibrația. Singura sa sarcină este să ofere capabilități interactive pentru notificare: butoane de răspuns, confirmare, anulare sau introducere text.

Obligativitatea categoriilor

Categoriile nu sunt obligatorii pentru afișarea notificărilor push pe iOS. Notificarea se va afișa în orice caz — cu butoane, dacă categoria este înregistrată, sau fără ele. Categoriile sunt necesare doar pentru a adăuga interactivitate notificărilor.

Cum funcționează categoriile de notificări?

Mecanismul categoriilor constă în patru etape: înregistrarea categoriei pe client, trimiterea payload-ului APNS cu categoria, recunoașterea categoriei de către sistem și procesarea acțiunii utilizatorului.

  • Înregistrare — aplicația creează UNNotificationCategory cu un tablou de acțiuni și îl înregistrează în UNUserNotificationCenter
  • Trimitere — serverul include în payload-ul APNS cheia category cu o valoare care corespunde identificatorului categoriei
  • Afișare — iOS afișează notificarea, iar la force touch arată butoanele asociate categoriei
  • Procesare — utilizatorul apasă un buton, se declanșează UNUserNotificationCenterDelegate.didReceive response

Acțiunile din categorie pot fi de două tipuri: foreground (deschid aplicația) și background(se execută în fundal). Pentru acțiunile de fundal, aplicația primește timp limitat (aproximativ 30 de secunde) pentru procesare în UNNotificationActionHandler.

Opțiuni la înregistrarea categoriei

UNNotificationCategory suportă mai multe opțiuni prin parametrul options: customDismissAction — primirea evenimentului la glisarea notificării, allowInCarPlay — afișarea acțiunilor în CarPlay, hiddenPreviewsBodyPlaceholder — text personalizat pentru previzualizări ascunse. Configurarea corectă a opțiunilor îmbunătățește experiența utilizatorului pe diferite dispozitive Apple.

UNNotificationAction: tipuri de acțiuni

iOS oferă două tipuri de acțiuni pentru categoriile de notificări. Fiecare tip are scopul și modul său de interacțiune cu utilizatorul.

TipClasăDescriereExemplu
Acțiune simplăUNNotificationActionButon cu titlu și opțiuni (destructive, foreground, authenticationRequired)„Șterge”, „Vezi”
Introducere textUNTextInputActionButon care deschide un câmp de introducere text cu sugestie„Răspunde”, „Comentează”

UNTextInputAction — o capacitate unică iOS. La apăsarea butonului „Răspunde”, sistemul afișează un câmp text în care utilizatorul introduce răspunsul. Textul introdus este transmis delegatului împreună cu identificatorul acțiunii. Acest lucru permite răspunsuri rapide fără a deschide aplicația.

Opțiuni ale acțiunilor: options.authenticationRequired — necesită deblocarea dispozitivului, options.destructive — evidențiază butonul cu roșu (pentru acțiuni periculoase), options.foreground — deschide aplicația după apăsare.

Configurarea categoriei în cod iOS

Categoriile se înregistrează la pornirea aplicației, de obicei în metoda didFinishLaunchingWithOptions. Înregistrarea are loc prin UNUserNotificationCenter, după solicitarea permisiunii pentru notificări. Categoriile pot fi actualizate la fiecare pornire — versiunile vechi sunt înlocuite cu cele noi.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Răspunde",
            options: [.foreground],
            textInputButtonTitle: "Trimite",
            textInputPlaceholder: "Introduceți mesajul..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "Șterge",
            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
    }
}

După înregistrarea categoriei, fiecare notificare cu category = „message" în payload-ul APNS va afișa butoanele „Răspunde" și „Șterge". Procesarea apăsărilor are loc în userNotificationCenter:didReceive response, unde actionIdentifier determină ce buton a fost apăsat.

Procesarea apăsării în delegat

Când utilizatorul apasă un buton al categoriei, iOS apelează delegatul UNUserNotificationCenterDelegate cu obiectul UNNotificationResponse. În response.actionIdentifier se află identificatorul butonului apăsat, iar în response.notification.request.content.userInfo — datele personalizate din payload-ul APNS. Pentru UNTextInputAction, este disponibil suplimentar response.userText cu textul introdus de utilizator.

Diferențe față de canalele Android

Dezvoltatorii familiarizați cu Android Notification Channels le confundă adesea cu iOS Notification Categories. În ciuda numelui similar, aceste mecanisme rezolvă sarcini diferite și funcționează în mod diferit.

  • Scop — Android Channels gestionează importanța și vizibilitatea notificărilor; iOS Categories — acțiunile interactive
  • Obligativitate — Android Channel este obligatoriu pentru afișarea notificării; iOS Category este opțională
  • Control de către utilizator — utilizatorul Android configurează canalele în setările sistemului; categoriile iOS nu sunt vizibile utilizatorului direct
  • Grupare — Android Channels pot fi combinate în grupuri (ChannelGroup); iOS Categories nu se grupează

Pe ambele platforme se pot combina ambele mecanisme: în Android, notificarea poate aparține unui canal cu acțiuni de la NotificationCompat, iar în iOS, categoria completează canalele care în iOS se numesc thread-id și servesc pentru gruparea notificărilor în centrul de notificări.

Payload APNS cu categorie

Pentru ca notificarea să se afișeze cu butoanele categoriei, serverul trebuie să includă cheia category în payload-ul APNS. Fără această cheie, sistemul nu va ști ce categorie să aplice notificării.

json
{
    "aps": {
        "alert": {
            "title": "Mesaj nou",
            "body": "Ana: Salut! Ce faci?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

Cheia category trebuie să coincidă exact cu identificatorul înregistrat prin setNotificationCategories pe client. Literele mari și mici contează — „message" și „Message" sunt considerate categorii diferite. Dacă categoria nu este găsită, notificarea se afișează fără butoane, fără erori în jurnal.

Procesarea categoriei necunoscute

Dacă serverul a trimis o notificare cu o categorie care nu este înregistrată pe client, iOS ignoră categoria și afișează notificarea fără butoane. Eroarea nu este înregistrată, iar aplicația nu află despre nepotrivire. Se recomandă sincronizarea listei de categorii între server și client printr-un fișier de configurare și verificarea acestora la fiecare actualizare a aplicației.

Pattern-uri de proiectare a categoriilor

La proiectarea categoriilor de notificări iOS, respectați principiul o categorie — un scenariu. Fiecare categorie trebuie să corespundă unui tip specific de interacțiune: răspuns la mesaj, confirmare acțiune, respingere cerere. Nu amestecați scenarii diferite într-o singură categorie — aceasta derutează utilizatorul și complică procesarea în delegat.

Folosiți UNTextInputAction pentru scenarii în care utilizatorul trebuie să introducă text fără a deschide aplicația: răspunsuri în mesagerie, comentarii, note rapide. Acțiunile text cresc implicarea — utilizatorul efectuează o acțiune semnificativă în 2 atingeri în loc de 5+ în aplicația deschisă.

Pentru acțiuni periculoase (ștergere, blocare) utilizați opțiunea destructive. iOS va evidenția aceste butoane cu roșu, avertizând utilizatorul despre ireversibilitatea acțiunii. Pentru acțiuni care necesită deblocarea dispozitivului (vizualizarea datelor personale), setați authenticationRequired — sistemul va solicita Face ID sau parola înainte de execuție.

Testați categoriile pe diferite dispozitive: pe iPhone cu 3D Touch, pe iPhone fără 3D Touch (apăsare lungă), pe iPad și pe Mac. Comportamentul categoriilor poate diferi ușor pe diferite platforme Apple. Atenție specială — CarPlay: butoanele categoriilor se afișează pe ecranul mașinii, dar introducerea textului nu este disponibilă, prin urmare UNTextInputAction este ascuns automat în CarPlay. Pe watchOS, categoriile nu sunt suportate — toate notificările se afișează fără butoane de acțiuni.

Întrebări frecvente

Câte categorii pot fi înregistrate în iOS?

Nu există limitări — iOS nu stabilește un număr maxim de UNNotificationCategory. Cu toate acestea, în practică se recomandă să nu depășiți 10–15 categorii pentru a nu complica procesarea în delegat. Fiecare categorie poate conține până la 4 acțiuni (butoane). Mai mult de 4 acțiuni sunt ignorate de sistem.

Cum se procesează apăsarea butonului unei categorii?

Implementați delegatul UNUserNotificationCenterDelegate și metoda didReceive response. Verificați response.actionIdentifier: UNNotificationDismissActionIdentifier — glisare ștergere, UNNotificationDefaultActionIdentifier — atingere corp, sau propriul identificator personalizat al butonului. Pentru butoanele text, textul este disponibil prin response.userText.

Cu ce diferă category de thread-id?

Category — determină acțiunile interactive (butoanele) pentru notificare. Thread-id — grupează notificările în Centrul de Notificări pe subiecte. Ambele chei sunt specificate în payload-ul APNS. Category și thread-id nu sunt legate: o notificare poate avea categorie fără thread-id și invers.

Funcționează categoriile pe macOS?

Da, UNNotificationCategory este suportat pe macOS 10.14+ (Mojave) în aplicațiile care folosesc UserNotifications framework. Comportamentul categoriilor pe macOS este similar cu iOS: la apăsarea notificării se afișează butoane, procesarea are loc prin UNUserNotificationCenterDelegate.

Trebuie actualizate categoriile la fiecare pornire?

Se recomandă înregistrarea categoriilor la fiecare pornire a aplicației prin setNotificationCategories. Sistemul înlocuiește setul vechi de categorii cu cel nou la fiecare apel. Dacă nu actualizați, categoriile se păstrează între porniri, dar la modificarea codului, categoriile vechi pot să nu corespundă cu cele noi.

Rezumat

  • Notification Category — mecanism iOS pentru adăugarea de acțiuni interactive la notificările push
  • UNNotificationCategory — clasa care combină identificatorul, tabloul UNNotificationAction și opțiunile
  • UNTextInputAction — acțiune cu câmp de introducere text pentru răspunsuri rapide fără deschiderea aplicației
  • Payload APNS — cheia category din dicționarul aps leagă notificarea de categoria înregistrată
  • Până la 4 acțiuni — numărul maxim de butoane per categorie, restul sunt ignorate de sistem
  • Opțiuni ale acțiunilor — foreground (deschide aplicația), destructive (buton roșu), authenticationRequired
  • Diferența față de Android — iOS Category răspunde de acțiuni, Android Channel — de importanță și sunet

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și