Notification Channel — cos’è, quali tipi esistono e come funzionano in Android

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

Notification Channel (canale di notifica) è un meccanismo di Android, introdotto nella versione 8.0 (API 26), che raggruppa le notifiche per categoria e dà all’utente il controllo sul loro comportamento. Ogni canale definisce il livello di importanza, il suono, la vibrazione e l’aspetto visivo per tutte le notifiche inviate tramite esso. Secondo Android Developers, NotificationChannel è obbligatorio per tutte le notifiche su Android 8+ — senza di esso, le notifiche non vengono visualizzate.

Punti chiave

  • Notification Channel — categoria di notifiche Android 8+ che gestisce il comportamento di un gruppo di notifiche
  • Obbligatorietà — su Android 8+, ogni notifica deve avere un canale, altrimenti non viene visualizzata
  • Livello di importanza — il livello di importanza del canale (IMPORTANCE_HIGH, DEFAULT, LOW, MIN) determina la modalità di visualizzazione
  • Controllo utente — l’utente può configurare ogni canale individualmente nelle impostazioni di sistema
  • Gruppi di canali — NotificationChannelGroup raggruppa visivamente i canali nell’interfaccia delle impostazioni

Cos’è Notification Channel?

Notification Channel è un contenitore logico per notifiche dello stesso tipo in Android 8+ (Oreo). Lo sviluppatore crea un canale con un ID univoco, imposta i suoi parametri e poi invia ogni notifica specificando questo canale. Tutte le notifiche in un canale ereditano le sue impostazioni.

Prima di Android 8, la gestione delle notifiche era binaria: tutto o niente. L’utente poteva solo disattivare completamente tutte le notifiche dell’app. I canali hanno risolto questo problema: ora puoi disattivare le notifiche “pubblicitarie” ma mantenere i “messaggi dagli amici.”

Dopo aver creato un canale, la sua importanza può essere modificata dall’utente in qualsiasi momento tramite Impostazioni → App → Notifiche. Lo sviluppatore non può modificare l’importanza a livello di programmazione dopo la creazione del canale — questa è una restrizione di sicurezza di Android.

Obbligatorietà del canale

Su Android 8+, ogni notifica deve essere inviata tramite un NotificationChannel. Se un’app tenta di mostrare una notifica senza canale, il sistema la ignora silenziosamente. L’eccezione sono le notifiche tramite NotificationCompat con un canale predefinito, creato automaticamente dalla libreria.

Come funzionano i canali di notifica in Android?

Un canale di notifica è definito da un insieme di parametri impostati quando viene creato tramite la classe NotificationChannel. Il parametro principale è il livello di importanza, che determina come la notifica interagisce con l’utente.

  • ID del canale — una stringa univoca (es. “messages”), utilizzata per inviare ogni notifica
  • Nome del canale — un nome leggibile mostrato all’utente nelle impostazioni
  • Descrizione — una spiegazione dello scopo del canale, mostrata nelle impostazioni sotto il nome
  • Importanza — un livello da IMPORTANCE_NONE a IMPORTANCE_HIGH, determina la modalità di visualizzazione
  • Suono e vibrazione — configurati separatamente per ogni canale al momento della creazione

Dopo la creazione, il canale appare nelle impostazioni di notifica del sistema. L’utente può modificare l’importanza, disattivare il suono, la vibrazione o bloccare completamente il canale. Tutte le modifiche hanno effetto immediato per tutte le notifiche successive.

Parametri di configurazione del canale

Quando si crea un NotificationChannel, è possibile configurare: suono (personalizzato o di sistema), vibrazione (pattern e durata), indicatore luminoso (colore LED), icona badge (setShowBadge), schermata di blocco (setLockscreenVisibility) e modalità non disturbare (setBypassDnd). Questi parametri vengono fissati al momento della creazione del canale e possono essere modificati solo dall’utente in seguito.

Livello di importanza: tabella comparativa

Il livello di importanza è il parametro principale di un canale. Determina se la notifica riprodurrà un suono, apparirà sullo schermo o verrà semplicemente posizionata nell’ombra. L’importanza non deve essere confusa con la priorità — l’importanza è impostata dal canale, e la priorità (setPriority) viene ignorata su Android 8+.

LivelloCostanteComportamentoSuono
HIGHIMPORTANCE_HIGH (4)Mostra banner heads-up, appare nell’ombra
DEFAULTIMPORTANCE_DEFAULT (3)Appare nell’ombra, senza heads-up
LOWIMPORTANCE_LOW (2)Appare nell’ombra senza suonoNo
MINIMPORTANCE_MIN (1)Solo nell’ombra, senza suono o vibrazioneNo
NONEIMPORTANCE_NONE (0)Non viene visualizzato affattoNo

Per la maggior parte degli scenari utente, utilizza IMPORTANCE_DEFAULT (3) — la notifica apparirà nell’ombra con suono ma senza banner pop-up. Utilizza IMPORTANCE_HIGH solo per eventi critici: chiamata in arrivo, messaggio da un contatto, promemoria timer.

Creazione di un canale nel codice Android

Il canale viene creato una volta all’avvio dell’app o al primo utilizzo. La pratica migliore è creare tutti i canali all’avvio dell’app, nel metodo Application.onCreate. Ricreare un canale esistente è sicuro — Android ignora la chiamata se il canale esiste già.

kotlin
class App : Application() {

    override fun onCreate() {
        super.onCreate()
        createNotificationChannels()
    }

    private fun createNotificationChannels() {
        val messagesChannel = NotificationChannel(
            CHANNEL_MESSAGES,
            "Messaggi",
            NotificationManager.IMPORTANCE_HIGH
        ).apply {
            description = "Notifiche di nuovi messaggi"
            enableVibration = true
            setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
        }

        val promoChannel = NotificationChannel(
            CHANNEL_PROMO,
            "Promozioni e novità",
            NotificationManager.IMPORTANCE_LOW
        ).apply {
            description = "Notifiche di marketing e offerte speciali"
            setShowBadge(false)
        }

        val manager = getSystemService(NotificationManager::class.java)
        manager.createNotificationChannel(messagesChannel)
        manager.createNotificationChannel(promoChannel)
    }

    companion object {
        const val CHANNEL_MESSAGES = "messages"
        const val CHANNEL_PROMO = "promo"
    }
}

Quando invii una notifica, specifica l’ID del canale tramite setChannelId (per NotificationCompat) o nel costruttore Notification.Builder. Se il canale con l’ID specificato non esiste, la notifica non verrà mostrata, ma non si verificherà alcun errore.

Gestione e modifica dei canali

Android fornisce diverse API per la gestione programmatica dei canali: ottenere l’elenco, eliminare e verificare le impostazioni correnti. L’eliminazione di un canale comporta la rimozione di tutte le sue notifiche dalla cronologia di sistema.

kotlin
val manager =
    getSystemService(NotificationManager::class.java)

// Ottenere elenco di tutti i canali
val channels = manager.getNotificationChannels()
channels.forEach { channel ->
    Log.d("Canali", "${channel.id}: ${channel.importance}")
}

// Conoscere l’importanza corrente (l’utente potrebbe averla modificata)
val channel = manager.getNotificationChannel(CHANNEL_MESSAGES)
if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
    // L’utente ha disattivato il canale
    suggestEnablingChannel()
}

// Elimina canale
manager.deleteNotificationChannel(CHANNEL_PROMO)

Dopo la creazione di un canale, lo sviluppatore non può modificarne l’importanza a livello di programmazione — questa è una restrizione di Android per proteggere l’utente da abusi. Se devi modificare l’importanza di un canale, crea un nuovo canale con un ID diverso e migra le notifiche.

Migrazione in caso di modifica dell’importanza

Se devi modificare l’importanza di un canale esistente, crea un nuovo canale con un ID diverso (es. “messages_v2”) e inizia a inviare notifiche ad esso. Il vecchio canale può essere eliminato tramite deleteNotificationChannel — tutte le sue notifiche verranno rimosse dalla cronologia. Avvisa l’utente della migrazione tramite l’interfaccia dell’app in modo che non perda le sue impostazioni.

Gruppi di canali (NotificationChannelGroup)

NotificationChannelGroup combina più canali in un gruppo visivo nell’interfaccia delle impostazioni di Android. I gruppi aiutano l’utente a navigare quando l’app utilizza 5+ canali: ad esempio, “Social,” “Sistema,” “Marketing.”

Un gruppo viene creato tramite createNotificationChannelGroup e passato al canale al momento della creazione tramite il metodo setGroup. L’eliminazione di un gruppo elimina anche tutti i suoi canali. Ogni canale può appartenere a un solo gruppo.

In pratica, i gruppi di canali sono raccomandati per le app con più di 3 canali. Semplificano la navigazione nelle impostazioni e riducono la probabilità che l’utente disattivi tutte le notifiche in una volta senza comprendere l’elenco dei canali.

Esempio di creazione di un gruppo di canali

Un gruppo viene creato tramite createNotificationChannelGroup con un ID e un nome univoci. Quindi ogni canale viene assegnato al gruppo tramite il metodo setGroup. Nelle impostazioni di sistema, il gruppo appare come una sezione con un’intestazione, sotto la quale sono elencati tutti i canali di questo gruppo. Se un gruppo viene eliminato, tutti i suoi canali vengono automaticamente rimossi dal sistema senza possibilità di recupero.

Pattern di progettazione dei canali

Una corretta progettazione dei canali di notifica influisce direttamente sull’esperienza utente e sulla fidelizzazione. Il pattern principale è tre livelli di importanza: canale critico (IMPORTANCE_HIGH) per messaggi e chiamate, standard (IMPORTANCE_DEFAULT) per notifiche generali e silenzioso (IMPORTANCE_LOW) per marketing e notizie. Questa gradazione offre all’utente una scelta chiara senza sovraccarico.

Il secondo pattern è un canale per modulo funzionale. Ogni modulo principale dell’app (chat, ordini, feed, marketing) ha il proprio canale. Se ci sono più di 5 moduli, combinali in un NotificationChannelGroup. Nelle impostazioni di sistema, il gruppo appare come una sezione con elementi comprimibili — questo semplifica la navigazione.

Il terzo pattern è un canale per sviluppatori. Crea un canale separato con IMPORTANCE_MIN per notifiche di debug e servizio. Gli utenti non li vedranno nell’ombra, ma lo sviluppatore può analizzare i log tramite adb. In produzione, questo canale può essere eliminato o nascosto dall’interfaccia tramite Intent nelle impostazioni.

Il quarto pattern è il feedback del canale. Mostra all’utente nell’interfaccia quali canali sono attivi e qual è la loro importanza corrente. Su Android 8+, puoi ottenere lo stato del canale tramite getNotificationChannel e offrire all’utente di modificare le impostazioni se il canale è disattivato. Questo è particolarmente importante per le funzioni critiche dell’app.

Domande frequenti

Cosa succede se non creo un canale su Android 8+?

La notifica non verrà visualizzata né nell’ombra né nel vassoio. Il sistema ignora silenziosamente la chiamata notify(). Eccezioni: quando si utilizza NotificationCompat, la libreria crea un canale predefinito, ma la sua importanza è sempre DEFAULT. Si consiglia di creare sempre i propri canali.

Posso modificare un canale dopo la sua creazione?

Puoi modificare il nome, la descrizione e il suono di un canale. Non puoi modificare l’importanza — questa decisione è protetta dal sistema contro lo sviluppatore. Se devi aumentare l’importanza, crea un nuovo canale con un ID diverso e usalo per le nuove notifiche. L’utente può modificare l’importanza in qualsiasi momento.

Come verificare se l’utente ha disattivato un canale?

Usa getNotificationChannel e controlla l’importanza: se il valore è IMPORTANCE_NONE, il canale è disattivato. Puoi anche aprire le impostazioni di sistema del canale tramite Intent: Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS con i parametri app_package e channel_id.

Quanti canali possono essere creati in un’app?

Non ci sono limiti — Android non imposta un limite al numero di canali. Tuttavia, si raccomanda di non creare più di 5–10 canali per non sovraccaricare l’utente di scelte. Il minimo ottimale è di 2–3 canali: notifiche critiche, regolari e di marketing.

I canali funzionano su Android 7 e versioni precedenti?

Su Android 7.1 (API 25) e versioni precedenti, i canali non sono supportati. La classe NotificationChannel è disponibile solo dall’API 26. Per la compatibilità all’indietro, usa NotificationCompat e racchiudi la creazione del canale in una condizione: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O).

Riepilogo

  • Notification Channel — meccanismo di raggruppamento notifiche Android 8+, obbligatorio per la visualizzazione
  • Importanza — livello da NONE a HIGH, determina suono, heads-up e visibilità nell’ombra
  • Gestione — l’utente può modificare importanza e suono del canale in qualsiasi momento
  • Creazione — il canale viene creato una volta tramite NotificationManager.createNotificationChannel
  • Importanza immutabile — lo sviluppatore non può aumentare l’importanza dopo la creazione del canale
  • Gruppi — NotificationChannelGroup combina i canali per una navigazione comoda nelle impostazioni
  • Compatibilità — su Android 7- usa NotificationCompat con controllo della versione SDK

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