Panoramica delle notifiche

Una notifica è un messaggio che Android visualizza al di fuori dell'interfaccia utente dell'app per fornire all'utente promemoria, comunicazioni da altre persone o altre informazioni tempestive provenienti dalla tua app. Gli utenti possono toccare la notifica per aprire l'app o eseguire un'azione direttamente dalla notifica.

Questa pagina fornisce una panoramica della posizione in cui vengono visualizzate le notifiche e delle funzionalità disponibili. Per iniziare a creare notifiche, leggi l'articolo Creare una notifica.

Per ulteriori informazioni sulla progettazione delle notifiche e sui pattern di interazione, consulta la guida alla progettazione delle notifiche.

Presente in un dispositivo

Le notifiche vengono mostrate automaticamente agli utenti di paesi e formati diversi. Una notifica viene visualizzata sotto forma di icona nella barra di stato, una voce più dettagliata nel riquadro a scomparsa delle notifiche e un badge nell'icona dell'app. Le notifiche vengono visualizzate anche su dispositivi indossabili accoppiati.

Barra di stato e riquadro a scomparsa delle notifiche

Quando emetti una notifica, questa viene visualizzata inizialmente sotto forma di icona nella barra di stato.

Figura 1. Le icone di notifica vengono visualizzate sul lato sinistro della barra di stato.

Gli utenti possono scorrere verso il basso sulla barra di stato per aprire il riquadro a scomparsa delle notifiche, dove possono visualizzare ulteriori dettagli ed eseguire azioni con la notifica.

Figura 2. Notifiche nel riquadro a scomparsa delle notifiche.

Gli utenti possono trascinare verso il basso su una notifica nel riquadro a scomparsa per rivelare la visualizzazione espansa, che mostra contenuti aggiuntivi e pulsanti di azione, se disponibili. A partire da Android 13, questa visualizzazione espansa include un pulsante che consente agli utenti di interrompere un'app con servizi in primo piano in corso.

Una notifica rimane visibile nel riquadro a scomparsa delle notifiche finché non viene ignorata dall'app o dall'utente.

Avviso

A partire da Android 5.0, le notifiche possono apparire brevemente in una finestra mobile chiamata notifica di avviso. In genere questo comportamento riguarda le notifiche importanti di cui l'utente deve essere a conoscenza immediatamente e viene visualizzato solo se il dispositivo è sbloccato.

Figura 3. All'app in primo piano viene visualizzata una notifica in primo piano.

La notifica in evidenza viene visualizzata quando l'app la emette. Scompare dopo un istante, ma rimane visibile nel riquadro a scomparsa delle notifiche come di consueto.

Le condizioni che potrebbero attivare notifiche in evidenza includono quanto segue:

  • L'attività dell'utente è in modalità a schermo intero, ad esempio quando l'app utilizza fullScreenIntent.

  • La notifica ha priorità elevata e utilizza suonerie o vibrazioni sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti.

  • Il canale di notifica è molto importante sui dispositivi con Android 8.0 (livello API 26) e versioni successive.

Schermata di blocco

A partire da Android 5.0, le notifiche possono essere visualizzate nella schermata di blocco.

Puoi impostare in modo programmatico se le notifiche pubblicate dalla tua app devono essere visualizzate in una schermata di blocco sicura e, in tal caso, il livello di dettaglio visibile.

Gli utenti possono utilizzare le impostazioni di sistema per scegliere il livello di dettaglio visibile nelle notifiche della schermata di blocco o per disattivare tutte le notifiche della schermata di blocco. A partire da Android 8.0, gli utenti possono disattivare o attivare le notifiche nella schermata di blocco per ogni canale di notifica.

Figura 4. Notifiche sulla schermata di blocco con contenuti sensibili nascosti.

Per ulteriori informazioni, consulta Impostare la visibilità della schermata di blocco.

Badge dell'icona dell'app

Nelle app di avvio app supportate sui dispositivi con Android 8.0 (livello API 26) e versioni successive, le icone delle app indicano le nuove notifiche con un badge colorato chiamato punto di notifica sulla corrispondente icona in Avvio applicazioni.

Gli utenti possono toccare e tenere premuta l'icona di un'app per visualizzare le relative notifiche. Gli utenti possono ignorare le notifiche o intervenire sulle notifiche dal menu, in modo simile al riquadro delle notifiche.

Figura 5. Badge di notifica e menu Tocca e tieni premuto.

Per ulteriori informazioni sul funzionamento dei badge, consulta Modificare un badge di notifica.

Wear OS

Se l'utente ha un dispositivo Wear OS accoppiato, tutte le notifiche vengono visualizzate automaticamente lì, inclusi i dettagli espandibili e i pulsanti di azione.

Puoi migliorare l'esperienza personalizzando l'aspetto delle notifiche sui dispositivi indossabili e offrendo diverse azioni, tra cui risposte suggerite e risposte vocali. Per ulteriori informazioni, scopri come aggiungere funzionalità specifiche per indossabili alla notifica.

Figura 6. Le notifiche vengono mostrate automaticamente su un dispositivo Wear OS accoppiato.

Anatomia delle notifiche

Il design di una notifica è determinato dai modelli di sistema e l'app definisce i contenuti per ogni parte del modello. Alcuni dettagli della notifica vengono mostrati solo nella visualizzazione espansa.

Figura 7. Una notifica con dettagli di base.

Le parti più comuni di una notifica sono indicate nella figura 7, come segue:

  1. Icona piccola: obbligatoria, impostata utilizzando setSmallIcon().
  2. Nome app: fornito dal sistema.
  3. Data/ora: fornito dal sistema, ma puoi sostituirlo utilizzando setWhen() o nasconderlo con setShowWhen(false).
  4. Icona grande: facoltativa; generalmente viene utilizzata solo per le foto dei contatti. Non utilizzarlo per l'icona dell'app. Impostalo utilizzando setLargeIcon().
  5. Titolo: facoltativo; impostato utilizzando setContentTitle().
  6. Testo: facoltativo; impostato utilizzando setContentText().

Consigliamo vivamente di utilizzare modelli di sistema per una corretta compatibilità della progettazione su tutti i dispositivi. Se necessario, puoi creare un layout di notifica personalizzato.

Per ulteriori informazioni su come creare una notifica con queste funzionalità e altro ancora, leggi Creare una notifica.

Azioni di notifica

Sebbene non sia obbligatorio, è buona norma che ogni notifica apra un'attività appropriata nell'app quando viene toccata. Oltre a questa azione di notifica predefinita, puoi aggiungere pulsanti di azione che completano un'attività relativa all'app dalla notifica, spesso senza aprire un'attività, come mostrato nella Figura 8.

Figura 8. Una notifica con pulsanti di azione.

A partire da Android 7.0 (livello API 24), puoi aggiungere un'azione per rispondere ai messaggi o inserire altro testo direttamente dalla notifica.

A partire da Android 10 (livello API 29), la piattaforma può generare automaticamente pulsanti di azione con le azioni basate su intent suggerite.

L'aggiunta dei pulsanti di azione è descritta ulteriormente nella sezione Creare una notifica.

Richiedi un dispositivo sbloccato

Gli utenti potrebbero vedere azioni di notifica nella schermata di blocco del dispositivo. Se un'azione di notifica causa l'avvio di un'attività o l'invio di una risposta diretta da parte dell'app, gli utenti devono sbloccare il dispositivo prima che l'app possa richiamare tale azione di notifica.

Su Android 12 (livello API 31) e versioni successive, puoi configurare un'azione di notifica in modo che il dispositivo sia sbloccato per consentire all'app di richiamare l'azione, a prescindere dal flusso di lavoro avviato dall'azione. Questa opzione aggiunge un ulteriore livello di sicurezza alle notifiche sui dispositivi bloccati.

Per richiedere che un dispositivo venga sbloccato prima che l'app richiami una determinata azione di notifica, trasmetti true in setAuthenticationRequired() durante la creazione dell'azione di notifica, come mostrato nel seguente snippet di codice:

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

Notifica espandibile

Per impostazione predefinita, i contenuti testuali della notifica vengono troncati per adattarli a una sola riga. Se vuoi che la notifica sia più lunga, puoi attivare un'area di testo più grande che si possa espandere applicando un modello aggiuntivo, come mostrato nella Figura 9.

Figura 9. Una notifica espandibile per il testo di grandi dimensioni.

Puoi anche creare una notifica espandibile con un'immagine, in stile Posta in arrivo, con una conversazione in chat o con i controlli per la riproduzione di contenuti multimediali. Per maggiori informazioni, consulta la pagina Creare una notifica espandibile.

Aggiornamenti e gruppi di notifiche

Per evitare di inondare gli utenti con notifiche multiple o ridondanti quando ricevi ulteriori aggiornamenti, aggiorna una notifica esistente anziché inviarne una nuova o utilizza la notifica in stile Posta in arrivo per mostrare gli aggiornamenti delle conversazioni.

Tuttavia, se è necessario inviare più notifiche, valuta la possibilità di raggruppare le notifiche separate in un gruppo (disponibile su Android 7.0 e versioni successive).

Un gruppo di notifica ti consente di comprimere più notifiche in un unico post nel riquadro a scomparsa delle notifiche con un riepilogo. L'utente può espandere progressivamente il gruppo di notifiche e ogni notifica al suo interno per avere maggiori dettagli, come mostrato nella Figura 10.

Figura 10. Un gruppo di notifiche compresso ed espanso.

Per scoprire come aggiungere notifiche a un gruppo, consulta Creare un gruppo di notifiche.

Canali di notifica

A partire da Android 8.0 (livello API 26), tutte le notifiche devono essere assegnate a un canale o non vengono visualizzate. In questo modo gli utenti possono disattivare canali di notifica specifici per la tua app anziché disattivare tutte le notifiche. Gli utenti possono controllare le opzioni visive e uditive per ciascun canale dalle impostazioni di sistema di Android, come mostrato nella Figura 11. Gli utenti possono anche toccare e tenere premuta una notifica per modificare il comportamento del canale associato.

Sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti, gli utenti possono gestire le notifiche solo in base alle app. Ogni app ha un solo canale su Android 7.1 e versioni precedenti.

Figura 11. Impostazioni di notifica per l'app Orologio e uno dei suoi canali.

Un'app può avere canali separati per ogni tipo di notifica problematica. Un'app può anche creare canali di notifica in risposta alle scelte effettuate dagli utenti. Ad esempio, puoi impostare canali di notifica separati per ogni gruppo di conversazione creato da un utente in un'app di messaggistica.

Sul canale si specifica anche il livello di importanza delle notifiche su Android 8.0 e versioni successive, in modo che tutte le notifiche pubblicate sullo stesso canale di notifica abbiano lo stesso comportamento. Questa operazione è descritta nella sezione seguente.

Per maggiori informazioni, vedi Creare e gestire i canali di notifica.

Importanza delle notifiche

Android utilizza l'importanza di una notifica per determinare in che misura la notifica interrompe l'utente visivamente e udibile. Maggiore è l'importanza di una notifica, più invasiva è la notifica.

Su Android 7.1 (livello API 25) e versioni precedenti, l'importanza di una notifica è determinata dal relativo priority.

Su Android 8.0 (livello API 26) e versioni successive, l'importanza di una notifica viene determinata dall'elemento importance del canale su cui viene pubblicata. Gli utenti possono modificare l'importanza di un canale di notifica nelle impostazioni di sistema, come mostrato nella figura 12.

Figura 12. Gli utenti possono modificare l'importanza di ciascun canale su Android 8.0 e versioni successive.

I livelli di importanza possibili e i comportamenti di notifica associati sono i seguenti:

  • Urgente: emette un suono e viene visualizzato come notifica in evidenza.

  • Alto: viene emesso un suono.

  • Media: non emette alcun suono.

  • Bassa: non emette alcun suono e non viene visualizzato nella barra di stato.

Tutte le notifiche, indipendentemente dall'importanza, vengono visualizzate in posizioni dell'interfaccia utente del sistema non invasivi, ad esempio nel riquadro a scomparsa delle notifiche e sotto forma di badge nell'icona in Avvio applicazioni. Tuttavia, puoi modificare l'aspetto del badge di notifica.

Per ulteriori informazioni, consulta Come impostare l'importanza.

Modalità Non disturbare

A partire da Android 5.0 (livello API 21), gli utenti possono attivare la modalità Non disturbare, che silenzia i suoni e la vibrazione per tutte le notifiche. Le notifiche vengono comunque visualizzate nell'interfaccia utente di sistema normalmente, a meno che l'utente non specifichi diversamente.

Nella modalità Non disturbare sono disponibili tre livelli:

  • Silenzio totale: blocca tutti i suoni e le vibrazioni, anche di sveglie, musica, video e giochi.
  • Solo sveglie: vengono bloccati tutti i suoni e le vibrazioni, ad eccezione delle sveglie.
  • Solo con priorità: gli utenti possono configurare le categorie a livello di sistema che possono interromperle, ad esempio solo sveglie, promemoria, eventi, chiamate o messaggi. Per i messaggi e le chiamate, gli utenti possono filtrare in base al mittente o al chiamante, come mostrato nella Figura 13.

Figura 13. Gli utenti possono consentire le notifiche in base alle categorie a livello di sistema (a sinistra) e al mittente o al chiamante (a destra).

Su Android 8.0 (livello API 26) e versioni successive, gli utenti possono inoltre consentire le notifiche per categorie specifiche dell'app, note anche come canali, eseguendo l'override di Non disturbare canale per canale. Ad esempio, un'app per pagamenti potrebbe disporre di canali per le notifiche relative a ritiri e versamenti. L'utente può consentire le notifiche di ritiro e di deposito o entrambe in modalità prioritaria.

Sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti, gli utenti possono consentire le notifiche tramite app per singola app, anziché canale per canale.

Per configurare le notifiche per queste impostazioni utente, devi impostare una categoria a livello di sistema.

Notifiche per i servizi in primo piano

Quando la tua app esegue un servizio in primo piano, ovvero un'Service in esecuzione in background, duratura a lungo e visibile all'utente, ad esempio un lettore multimediale. Questa notifica non può essere ignorata come le altre notifiche. Per rimuovere la notifica, il servizio deve essere interrotto o rimosso dallo stato in primo piano.

Per ulteriori informazioni, consulta la pagina Servizi in primo piano. Se stai creando un media player, leggi anche Riproduzione di contenuti multimediali in background.

Limiti di pubblicazione

A partire da Android 8.1 (livello API 27), le app non possono emettere un suono di notifica più di una volta al secondo. Se l'app pubblica più notifiche in un secondo, vengono visualizzate tutte come previsto, ma solo la prima notifica al secondo emette un suono.

Tuttavia, Android applica un limite di frequenza anche quando aggiorna una notifica. Se pubblichi gli aggiornamenti di una singola notifica troppo spesso, ad esempio molti in meno di un secondo, il sistema potrebbe ignorare gli aggiornamenti.

Compatibilità delle notifiche

L'interfaccia utente del sistema di notifica di Android e le API relative alle notifiche sono in continua evoluzione. Per utilizzare le funzionalità più recenti dell'API di notifica e supportare i dispositivi meno recenti, utilizza l'API di notifica Support Library NotificationCompat e le relative sottoclassi, nonché NotificationManagerCompat. Questo ti consente di evitare di scrivere codice condizionale per controllare i livelli delle API, poiché sono queste API a occuparsene.

NotificationCompat viene aggiornato man mano che la piattaforma si evolve per includere i metodi più recenti. Tuttavia, la disponibilità di un metodo in NotificationCompat non garantisce che la funzionalità corrispondente venga fornita sui dispositivi meno recenti. In alcuni casi, la chiamata a un'API di recente introduzione comporta un'automazione sui dispositivi meno recenti.

Di seguito è riportato un riepilogo delle modifiche più significative del comportamento per livello API per le notifiche Android.

Android 5.0, livello API 21

  • Introduce la schermata di blocco e le notifiche in evidenza.

  • Consente all'utente di impostare il telefono in modalità Non disturbare e configurare le notifiche che possono interromperle quando il dispositivo è in modalità di sola priorità.

  • Aggiunge metodi per stabilire se mostrare una notifica nella schermata di blocco, ad esempio setVisibility(), e per specificare una versione "pubblica" del testo della notifica.

  • Aggiunge il metodo setPriority(), che indica al sistema quanto è invasiva la notifica. Ad esempio, se imposti la priorità su alta, la notifica verrà visualizzata come notifica in evidenza.

  • Aggiunge il supporto degli stack di notifica per i dispositivi Android Wear (ora chiamati Wear OS). Raggruppa le notifiche utilizzando setGroup(). Gli stack di notifiche, in seguito noti come gruppo o bundle, non sono supportati su tablet o telefoni fino ad Android 7.0 (livello API 24).

Android 7.0, livello API 24

  • Rimodella i modelli di notifica per enfatizzare l'immagine hero e l'avatar.

  • Aggiunge tre modelli di notifica: uno per le app di messaggistica e gli altri due per decorare visualizzazioni di contenuti personalizzate con l'offerta espandibile e altre decorazioni del sistema.

  • Aggiunge il supporto dei dispositivi portatili, come telefoni e tablet, per i gruppi di notifiche. Utilizza la stessa API degli stack di notifiche di Android Wear (ora chiamati Wear OS) introdotti in Android 5.0 (livello API 21).

  • Consente agli utenti di rispondere all'interno di una notifica utilizzando una risposta in linea. Possono inserire del testo, che viene quindi indirizzato all'app principale della notifica.

Android 8.0, livello API 26

  • Consente di inserire le singole notifiche in un canale specifico.

  • Consente agli utenti di disattivare le notifiche per canale invece di disattivare tutte le notifiche da un'app.

  • Consente alle app con notifiche attive di mostrare un badge di notifica sopra l'icona dell'app nella schermata Home o in Avvio app.

  • Consente agli utenti di posticipare una notifica dal riquadro a scomparsa. Puoi impostare un timeout automatico per una notifica.

  • Consente di impostare il colore di sfondo della notifica.

  • Sposta alcune API relative ai comportamenti di notifica da Notification a NotificationChannel. Ad esempio, usa NotificationChannel.setImportance() anziché NotificationCompat.Builder.setPriority() per Android 8.0 e versioni successive.

Android 13.0, livello API 33

Android 14.0, livello API 34

  • Limita le notifiche di intent a schermo intero alle app che forniscono chiamate e sveglie. Usa l'API NotificationManager.canUseFullScreenIntent per controllare se la tua app ha l'autorizzazione. In caso contrario, la tua app può usare ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT per avviare la pagina delle impostazioni in cui gli utenti possono concedere l'autorizzazione.

  • Modifica il modo in cui gli utenti ricevono le notifiche non ignorabili, consentendo agli utenti di ignorare l'azione di notifica anche quando è impostato il flag Notification.FLAG_ONGOING_EVENT. Ciò non si applica alle notifiche CallStyle se è impostato il flag Notification.FLAG_ONGOING_EVENT o il controller dei criteri dei dispositivi (DPC, Device Policy Controller) e i pacchetti di supporto per le aziende. Questo non vale anche quando il telefono è bloccato o se l'utente seleziona Cancella tutto.