Notification Category: cos'è, quali categorie esistono e come funzionano in iOS

Autore: IT Sectr Pubblicato: 2026-03-20 Tempo di lettura: 8 min

Notification Category (categoria di notifica) è un meccanismo iOS per raggruppare le notifiche push per tipo e allegare azioni personalizzate. La categoria determina quali pulsanti vengono visualizzati utilizzando 3D Touch o pressione prolungata su una notifica, nonché come il sistema elabora le notifiche in arrivo di questo tipo. Secondo la Documentazione per Sviluppatori Apple, UNNotificationCategory viene registrato in UNUserNotificationCenter e collegato a una notifica tramite il campo category nel payload APNS.

Punti Chiave

  • Notification Category — meccanismo iOS per classificare le notifiche push e aggiungervi azioni
  • UNNotificationCategory — classe che registra una categoria con un insieme di UNNotificationAction
  • Azioni — pulsanti sotto la notifica: UNTextInputAction per l'inserimento di testo, UNNotificationAction per il tocco
  • Collegamento — la categoria è specificata nel payload APNS tramite la chiave category nel dizionario aps
  • Differenza da Android — iOS Category gestisce le azioni, mentre Android Channel gestisce importanza e suono

Cos'è Notification Category in iOS?

Notification Category è una funzionalità iOS (dalla versione 8.0) che consente agli sviluppatori di classificare le notifiche push e aggiungervi azioni interattive. Quando un utente riceve una notifica e preme con forza (3D Touch) o effettua una pressione prolungata, appaiono pulsanti definiti dalla categoria. Questo rende le notifiche interattive e consente agli utenti di agire senza aprire l'app.

Una categoria viene registrata tramite un oggetto UNNotificationCategory, che contiene un identificatore, un array di azioni e parametri di visualizzazione opzionali. Il sistema utilizza l'identificatore di categoria dal payload APNS per trovare la categoria registrata e mostrare i pulsanti corrispondenti.

A differenza di Android Notification Channel, iOS Category non gestisce importanza, suono o vibrazione. Il suo unico scopo è fornire capacità interattive per le notifiche: pulsanti di risposta, conferma, annullamento o inserimento di testo.

Le categorie sono obbligatorie?

Le categorie non sono obbligatorie per visualizzare le notifiche push su iOS. La notifica apparirà comunque — con pulsanti se una categoria è registrata, o senza. Le categorie sono necessarie solo per aggiungere interattività alle notifiche.

Come funzionano le categorie di notifica?

Il meccanismo delle categorie si compone di quattro fasi: registrare la categoria sul client, inviare un payload APNS con la categoria, il sistema riconoscere la categoria e gestire l'azione dell'utente.

  • Registrazione — l'app crea una UNNotificationCategory con un array di azioni e la registra in UNUserNotificationCenter
  • Invio — il server include la chiave category nel payload APNS con un valore corrispondente all'identificatore della categoria
  • Visualizzazione — iOS mostra la notifica e con force touch mostra i pulsanti associati alla categoria
  • Gestione — l'utente tocca un pulsante, attivando UNUserNotificationCenterDelegate.didReceive response

Le azioni in una categoria possono essere di due tipi: foreground (aprono l'app) e background (vengono eseguite in background). Per le azioni in background, l'app ha tempo limitato (circa 30 secondi) per elaborare in UNNotificationActionHandler.

Opzioni durante la registrazione di una categoria

UNNotificationCategory supporta diverse opzioni tramite il parametro options: customDismissAction — ricevere un evento quando si scorre via la notifica, allowInCarPlay — mostrare azioni in CarPlay, hiddenPreviewsBodyPlaceholder — testo segnaposto personalizzato per anteprime nascoste.

UNNotificationAction: tipi di azioni

iOS fornisce due tipi di azioni per le categorie di notifica. Ogni tipo ha il proprio scopo e modo di interagire con l'utente.

TipoClasseDescrizioneEsempio
Azione sempliceUNNotificationActionUn pulsante con titolo e opzioni (destructive, foreground, authenticationRequired)“Elimina”, “Vedi”
Inserimento testoUNTextInputActionUn pulsante che apre un campo di inserimento testo con un segnaposto“Rispondi”, “Commenta”

UNTextInputAction è una funzionalità unica di iOS. Quando l'utente tocca il pulsante “Rispondi”, il sistema mostra un campo di testo in cui l'utente digita la sua risposta. Il testo inserito viene passato al delegato insieme all'identificatore dell'azione. Questo consente di implementare risposte rapide senza aprire l'app.

Opzioni azione: options.authenticationRequired — richiede lo sblocco del dispositivo, options.destructive — evidenzia il pulsante in rosso (per azioni pericolose), options.foreground — apre l'app dopo il tocco.

Configurare una categoria nel codice iOS

Le categorie vengono registrate all'avvio dell'app, solitamente nel metodo didFinishLaunchingWithOptions. La registrazione avviene tramite UNUserNotificationCenter, dopo aver richiesto il permesso per le notifiche. Le categorie possono essere aggiornate a ogni avvio — le versioni vecchie vengono sostituite con quelle nuove.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Rispondi",
            options: [.foreground],
            textInputButtonTitle: "Invia",
            textInputPlaceholder: "Inserisci messaggio..."
        )

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

Dopo aver registrato la categoria, qualsiasi notifica con category = “message” nel payload APNS mostrerà i pulsanti “Rispondi” e “Elimina”. La gestione dei tocchi avviene in userNotificationCenter:didReceive response, dove actionIdentifier determina quale pulsante è stato premuto.

Gestione del tocco nel delegato

Quando l'utente tocca un pulsante di categoria, iOS chiama il UNUserNotificationCenterDelegate con un oggetto UNNotificationResponse. response.actionIdentifier contiene l'identificatore del pulsante toccato, e response.notification.request.content.userInfo contiene i dati personalizzati dal payload.

Differenze dai canali Android

Gli sviluppatori familiari con i canali di notifica Android spesso li confondono con le categorie di notifica iOS. Nonostante il nome simile, questi meccanismi risolvono compiti diversi e funzionano in modo diverso.

  • Scopo — i canali Android gestiscono l'importanza e la visibilità delle notifiche; le categorie iOS gestiscono le azioni interattive
  • Obbligatorietà — il canale Android è obbligatorio per mostrare una notifica; la categoria iOS è opzionale
  • Controllo utente — gli utenti Android configurano i canali nelle impostazioni di sistema; le categorie iOS non sono visibili direttamente all'utente
  • Raggruppamento — i canali Android possono essere raggruppati in ChannelGroups; le categorie iOS non vengono raggruppate

Entrambe le piattaforme possono combinare entrambi i meccanismi: su Android, una notifica può appartenere a un canale con azioni da NotificationCompat, mentre su iOS, una categoria completa i canali, che su iOS sono chiamati thread-id e servono per raggruppare le notifiche nel centro notifiche.

Payload APNS con categoria

Affinché una notifica venga visualizzata con i pulsanti della categoria, il server deve includere la chiave category nel payload APNS. Senza questa chiave, il sistema non saprà quale categoria applicare alla notifica.

json
{
    "aps": {
        "alert": {
            "title": "Nuovo messaggio",
            "body": "Anna: Ciao! Come stai?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

La chiave category deve corrispondere esattamente all'identificatore registrato tramite setNotificationCategories sul client. Le maiuscole/minuscole sono importanti — “message” e “Message” sono considerate categorie diverse. Se la categoria non viene trovata, la notifica appare senza pulsanti, senza errori nei log.

Gestione di categorie sconosciute

Se il server invia una notifica con una categoria non registrata sul client, iOS ignora la categoria e mostra la notifica senza pulsanti. L'errore non viene registrato e l'app non viene a conoscenza della mancata corrispondenza. Si consiglia di sincronizzare l'elenco delle categorie tra server e client.

Pattern di progettazione delle categorie

Quando si progettano categorie di notifica in iOS, seguire il principio una categoria — uno scenario. Ogni categoria dovrebbe corrispondere a un tipo specifico di interazione: rispondere a un messaggio, confermare un'azione, rifiutare una richiesta. Non mescolare scenari diversi in una singola categoria.

Utilizzare UNTextInputAction per scenari in cui l'utente deve inserire testo senza aprire l'app: risposte di messaggistica, commenti, note rapide. Le azioni di testo aumentano il coinvolgimento — l'utente esegue un'azione significativa in 2 tocchi invece di 5+ all'interno dell'app.

Per azioni pericolose (elimina, blocca), utilizzare l'opzione destructive. iOS evidenzierà questi pulsanti in rosso, avvisando l'utente dell'irreversibilità dell'azione. Per azioni che richiedono lo sblocco del dispositivo (visualizzazione dati personali), specificare authenticationRequired.

Testare le categorie su diversi dispositivi: su iPhone con 3D Touch, su iPhone senza 3D Touch (pressione prolungata), su iPad e su Mac. Il comportamento delle categorie può variare leggermente tra le piattaforme Apple. Attenzione particolare a CarPlay: i pulsanti delle categorie appaiono sullo schermo dell'auto e dovrebbero essere progettati con testo minimo per la sicurezza del conducente.

Domande frequenti

Quante categorie possono essere registrate in iOS?

Non ci sono limiti — iOS non impone un limite al numero di UNNotificationCategory. Tuttavia, in pratica, si consiglia di non utilizzare più di 10–15 categorie per non complicare la gestione nel delegato. Ogni categoria può contenere fino a 4 azioni (pulsanti). Più di 4 azioni vengono ignorate dal sistema.

Come gestire il tocco su un pulsante di categoria?

Implementare il protocollo UNUserNotificationCenterDelegate e il metodo didReceive. Verificare response.actionIdentifier: UNNotificationDismissActionIdentifier — scorrere per chiudere, UNNotificationDefaultActionIdentifier — tocco sul corpo, o il proprio identificatore personalizzato del pulsante. Per i pulsanti di inserimento testo, il testo è disponibile tramite response.userText.

In cosa category si differenzia da thread-id?

Category — definisce le azioni interattive (pulsanti) per la notifica. Thread-id — raggruppa le notifiche nel Centro Notifiche per argomento. Entrambe le chiavi sono specificate nel payload APNS. Category e thread-id non sono correlati: una notifica può avere una categoria ma non un thread-id, e viceversa.

Le categorie funzionano su macOS?

Sì, UNNotificationCategory è supportato su macOS 10.14+ (Mojave) nelle app che utilizzano il framework UserNotifications. Il comportamento delle categorie su macOS è simile a iOS: cliccando su una notifica, vengono mostrati i pulsanti e la gestione avviene tramite UNUserNotificationCenterDelegate.

È necessario aggiornare le categorie a ogni avvio?

Si consiglia di registrare le categorie a ogni avvio dell'app tramite setNotificationCategories. Il sistema sostituisce il vecchio insieme di categorie con quello nuovo a ogni chiamata. Se non si aggiorna, le categorie persistono tra gli avvii, ma quando il codice cambia, le vecchie categorie possono causare comportamenti imprevisti.

Riepilogo

  • Notification Category — un meccanismo iOS per aggiungere azioni interattive alle notifiche push
  • UNNotificationCategory — una classe che combina un identificatore, un array di UNNotificationAction e opzioni
  • UNTextInputAction — un'azione con campo di inserimento testo per risposte rapide senza aprire l'app
  • Payload APNS — la chiave category nel dizionario aps collega la notifica a una categoria registrata
  • Fino a 4 azioni — numero massimo di pulsanti per categoria, il resto viene ignorato dal sistema
  • Opzioni azione — foreground (aprire l'app), destructive (pulsante rosso), authenticationRequired
  • Differenza da Android — iOS Category gestisce le azioni, Android Channel gestisce importanza e suono

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche