Una notifica è un messaggio visualizzato da Android all'esterno dell'interfaccia utente della tua app per fornire all'utente promemoria, comunicazioni di altre persone o altre informazioni tempestive della tua app. Gli utenti possono toccare la notifica per aprire la tua app o eseguire un'azione direttamente dalla notifica.
Questa pagina fornisce una panoramica di dove 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.
Apparenze su un dispositivo
Le notifiche vengono visualizzate automaticamente agli utenti in posizioni e formati diversi. Una notifica viene visualizzata sotto forma di icona nella barra di stato, voce più dettagliata nel riquadro a scomparsa delle notifiche e badge sull'icona dell'app. Le notifiche vengono visualizzate anche sugli indossabili accoppiati.
Barra di stato e riquadro delle notifiche
Quando emetti una notifica, questa viene visualizzata inizialmente come icona nella 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.
Gli utenti possono trascinare verso il basso una notifica nel riquadro laterale per visualizzare la visualizzazione espansa, che mostra contenuti aggiuntivi e pulsanti di azione, se forniti. 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 finché non viene chiusa dall'app o dall'utente.
Notifica in evidenza
A partire da Android 5.0, le notifiche possono essere visualizzate brevemente in una finestra popup chiamata notifica in primo piano. Questo comportamento riguarda in genere le notifiche importanti di cui l'utente deve essere informato immediatamente e viene visualizzato solo se il dispositivo è sbloccato.
La notifica in evidenza viene visualizzata quando la tua app emette la notifica. scompare dopo un istante, ma rimane visibile nel riquadro delle notifiche come di consueto.
Le condizioni che potrebbero attivare le notifiche di avviso includono:
L'attività dell'utente è in modalità a schermo intero, ad esempio quando l'app utilizza
fullScreenIntent
.La notifica ha priorità elevata e utilizza suoni o vibrazioni sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti.
Il canale di notifica è di grande importanza sui dispositivi con Android 8.0 (livello API 26) e versioni successive.
Schermata di blocco
A partire dal rilascio di 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 su una schermata di blocco sicura e, in questo 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 nella schermata di blocco. A partire da Android 8.0, gli utenti possono disattivare o attivare le notifiche della schermata di blocco per ogni canale di notifica.
Per scoprire di più, vedi Impostare la visibilità della schermata di blocco.
Badge dell'icona dell'app
Nei lanci supportati sui dispositivi con Android 8.0 (livello API 26) e versioni successive, le icone delle app indicano le nuove notifiche con un badge colorato noto come punto di notifica sull'icona del programma di avvio app corrispondente.
Gli utenti possono toccare e tenere premuta l'icona di un'app per visualizzare le notifiche relative a quell'app. Gli utenti possono ignorare o gestire le notifiche da questo menu, in modo simile al riquadro delle notifiche.
Per scoprire di più sul funzionamento dei badge, leggi l'articolo Modificare un badge di notifica.
Wear OS
Se l'utente ha un dispositivo Wear OS accoppiato, tutte le notifiche vengono visualizzate automaticamente, inclusi i dettagli espandibili e i pulsanti di azione.
Puoi migliorare l'esperienza personalizzando l'aspetto delle notifiche sugli indossabili e proponendo diverse azioni, tra cui risposte suggerite e risposte con input vocale. Per ulteriori informazioni, scopri come aggiungere funzionalità specifiche per i dispositivi indossabili alla notifica.
Anatomia delle notifiche
Il design di una notifica è determinato dai modelli di sistema e la tua app definisce i contenuti per ogni parte del modello. Alcuni dettagli della notifica vengono visualizzati solo nella visualizzazione espansa.
Le parti più comuni di una notifica sono indicate nella figura 7, come segue:
- Icona piccola: obbligatoria; impostata utilizzando
setSmallIcon()
. - Nome app: fornito dal sistema.
- Timbro di data e ora: fornito dal sistema, ma puoi sostituirlo utilizzando
setWhen()
o nasconderlo utilizzandosetShowWhen(false)
. - Icona grande: facoltativa; generalmente utilizzata solo per le foto dei contatti.
Non utilizzarla per l'icona dell'app. Impostalo con
setLargeIcon()
. - Titolo: facoltativo; impostato utilizzando
setContentTitle()
. - Testo: facoltativo; impostato utilizzando
setContentText()
.
Ti consigliamo vivamente di utilizzare i modelli di sistema per una corretta compatibilità del design 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 altre ancora, leggi l'articolo Creare una notifica.
Azioni di notifica
Sebbene non sia obbligatorio, è buona norma che ogni notifica apra un'attività dell'app appropriata quando viene toccata. Oltre a questa azione predefinita della notifica, puoi aggiungere pulsanti di azione che completano un'attività correlata all'app dalla notifica, spesso senza aprire un'attività, come mostrato nella figura 8.
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 azioni suggerite in base all'intenzione.
L'aggiunta di pulsanti di azione è spiegata in modo più dettagliato in Creare una notifica.
Richiedere un dispositivo sbloccato
Gli utenti potrebbero vedere le azioni di notifica nella schermata di blocco del dispositivo. Se un'azione di notifica fa sì che un'app avvii un'attività o invii una risposta diretta, gli utenti devono sbloccare il dispositivo prima che l'app possa invocare l'azione di notifica.
Su Android 12 (livello API 31) e versioni successive, puoi configurare un'azione di notifica in modo che il dispositivo debba essere sbloccato affinché la tua app possa invocarla, indipendentemente dal flusso di lavoro avviato dall'azione. Questa opzione aggiunge un ulteriore livello di sicurezza alle notifiche sui dispositivi bloccati.
Per richiedere lo sblocco di un dispositivo prima che l'app invochi una determinata azione di notifica, passa true
a setAuthenticationRequired()
quando crei l'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, il contenuto testuale della notifica viene troncato per rientrare in una riga. Se vuoi che la notifica sia più lunga, puoi attivare un'area di testo più grande che può essere espansa applicando un modello aggiuntivo, come mostrato nella figura 9.
Puoi anche creare una notifica espandibile con un'immagine, in stile posta in arrivo, con una conversazione di chat o con i controlli di riproduzione dei contenuti multimediali. Per ulteriori informazioni, consulta Creare una notifica espandibile.
Aggiornamenti e gruppi di notifiche
Per evitare di inondare i tuoi utenti di notifiche multiple o ridondanti in caso di aggiornamenti aggiuntivi, aggiorna una notifica esistente anziché inviarne una nuova oppure utilizza la notifica in stile casella di posta per mostrare gli aggiornamenti delle conversazioni.
Tuttavia, se è necessario inviare più notifiche, ti consigliamo di raggrupparle in un gruppo, disponibile su Android 7.0 e versioni successive.
Un gruppo di notifiche ti consente di comprimere più notifiche in un unico post nel riquadro delle notifiche con un riepilogo. L'utente può espandere progressivamente il gruppo di notifiche e ogni notifica al suo interno per visualizzare ulteriori dettagli, come mostrato nella figura 10.
Per informazioni su come aggiungere notifiche a un gruppo, vedi 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, altrimenti 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 ogni 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 per le singole app. Su Android 7.1 e versioni precedenti, ogni app ha un solo canale.
Un'app può avere canali separati per ogni tipo di notifica che emette. Un'app può anche creare canali di notifica in risposta alle scelte degli utenti. Ad esempio, puoi configurare canali di notifica separati per ogni gruppo di conversazione creato da un utente in un'app di messaggistica.
È qui che puoi anche specificare il livello di importanza per le notifiche su Android 8.0 e versioni successive, in modo che tutte le notifiche pubblicate nello stesso canale abbiano lo stesso comportamento. Questo è descritto nella sezione seguente.
Per saperne di più, consulta la pagina Creare e gestire i canali di notifica.
Importanza notifiche
Android utilizza l'importanza di una notifica per determinare quanto la notifica interrompe l'utente visivamente e acusticamente. Maggiore è l'importanza di una notifica, più sarà intrusiva.
Su Android
7.1 (livello API 25) e versioni precedenti, l'importanza di una notifica è determinata dall'elemento
priority
della notifica.
Su Android 8.0 (livello API 26) e versioni successive, l'importanza di una notifica è determinata dal valore importance
del canale in cui viene pubblicata. Gli utenti possono modificare l'importanza di un canale di notifica nelle impostazioni di sistema, come mostrato nella figura 12.
I possibili livelli di importanza e i relativi comportamenti di notifica sono i seguenti:
Urgente: emette un suono e viene visualizzato come avviso di avviso.
Alto: emette un suono.
Medio: non emette alcun suono.
Basso: 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 invasive, ad esempio nel riquadro a scomparsa delle notifiche e come badge sull'icona del programma di avvio. Tuttavia, puoi modificare l'aspetto del badge della notifica.
Per ulteriori informazioni, leggi l'articolo su 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 disattiva l'audio e la vibrazione per tutte le notifiche. Le notifiche vengono comunque visualizzate nell'interfaccia utente di sistema come di consueto, 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: blocca tutti i suoni e le vibrazioni, tranne quelli delle sveglie.
- Solo priorità: gli utenti possono configurare le categorie a livello di sistema che possono interromperli, ad esempio solo sveglie, promemoria, eventi, chiamate o messaggi. Per i messaggi e le chiamate, gli utenti possono filtrare in base al mittente o all'autore della chiamata, come mostrato nella figura 13.
Su Android 8.0 (livello API 26) e versioni successive, gli utenti possono anche consentire la ricezione di notifiche per categorie specifiche dell'app, note anche come canali, ignorando la modalità Non disturbare su base canale. Ad esempio, un'app di pagamento potrebbe avere canali per le notifiche relative a prelievi e versamenti. L'utente può consentire le notifiche di prelievo, le notifiche di deposito o entrambe in modalità Priorità.
Sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti, gli utenti possono consentire le notifiche su base app, anziché su base canale.
Per configurare le notifiche per queste impostazioni utente, devi impostare una categoria a livello di sistema.
Notifiche per i servizi in primo piano
È necessaria una notifica quando la tua app esegue un servizio in primo piano, ovvero un Service
in esecuzione in background che sia duraturo e di grande impatto per l'utente, ad esempio un lettore multimediale. Questa notifica non può essere ignorata come le altre. Per rimuovere
la notifica, il servizio deve essere arrestato o rimosso dallo stato
in primo piano.
Per maggiori informazioni, leggi la pagina Servizi in primo piano. Se stai creando un media player, leggi anche l'articolo Riprodurre contenuti multimediali in background.
Limiti per i post
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 la tua app pubblica più notifiche in un secondo, vengono visualizzate tutte come previsto, ma solo la prima notifica al secondo produce un suono.
Tuttavia, Android applica anche un limite di frequenza quando aggiorna una notifica. Se posti aggiornamenti di una singola notifica troppo di frequente, ad esempio molti in meno di un secondo, il sistema potrebbe non inviare gli aggiornamenti.
Compatibilità con le notifiche
L'interfaccia utente del sistema di notifiche di Android e le API correlate alle notifiche si evolvono continuamente. Per utilizzare le funzionalità dell'API di notifica più recenti supportando al contempo i dispositivi meno recenti, utilizza l'API di notifica Support Library, NotificationCompat
e le relative sottoclassi, nonché NotificationManagerCompat
.
In questo modo, puoi evitare di scrivere codice condizionale per controllare i livelli dell'API, perché queste API se ne occupano.
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 sia fornita sui dispositivi meno recenti. In alcuni
casi, la chiamata di un'API appena introdotta non produce alcun risultato sui dispositivi meno recenti.
Di seguito è riportato un riepilogo delle modifiche al comportamento più significative in base al livello API per le notifiche Android.
Android 5.0, livello API 21
Vengono introdotte la schermata di blocco e le notifiche heads-up.
Consente all'utente di impostare lo smartphone sulla modalità Non disturbare e di configurare le notifiche che possono interromperlo quando il dispositivo è in modalità Solo con priorità.
Aggiunge metodi per impostare se una notifica viene visualizzata nella schermata di blocco, come
setVisibility()
, e per specificare una versione "pubblica" del testo della notifica.Aggiunge il metodo
setPriority()
, che indica al sistema quanto sia interattiva la notifica. Ad esempio, impostando la priorità su alta, la notifica viene visualizzata come notifica in evidenza.Aggiunge il supporto delle serie di notifiche ai dispositivi Android Wear (ora chiamati Wear OS). Metti le notifiche in una serie utilizzando
setGroup()
. Gli stack di notifiche, in seguito noti come gruppo o bundle, non sono supportati su tablet o smartphone fino ad Android 7.0 (livello API 24).
Android 7.0, livello API 24
Modifica lo stile dei modelli di notifica per mettere in evidenza l'immagine hero e l'avatar.
Aggiunge tre modelli di notifica: uno per le app di messaggistica e gli altri due per decorare le visualizzazioni dei contenuti personalizzati con l'affordance espandibile e altre decorazioni di sistema.
Aggiunge il supporto per i gruppi di notifiche ai dispositivi portatili, come smartphone e tablet. Utilizza la stessa API delle strutture di notifiche di Android Wear (ora chiamata Wear OS) introdotte in Android 5.0 (livello API 21).
Consente agli utenti di rispondere all'interno di una notifica utilizzando la risposta in linea. Possono inserire testo, che viene poi inoltrato 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, anziché disattivarle tutte da un'app.
Consente alle app con notifiche attive di mostrare un badge di notifica sopra l'icona dell'app nella schermata Home o di avvio.
Consente agli utenti di posticipare una notifica dal riquadro App. Puoi impostare un timeout automatico per una notifica.
Consente di impostare il colore di sfondo della notifica.
Spostamento di alcune API relative ai comportamenti di notifica da
Notification
aNotificationChannel
. Ad esempio, utilizzaNotificationChannel.setImportance()
invece diNotificationCompat.Builder.setPriority()
per Android 8.0 e versioni successive.
Android 13.0, livello API 33
- Aggiunge l'autorizzazione di runtime. Affinché la tua app possa inviare notifiche esenti, l'utente deve concederle questa autorizzazione.
Android 14.0, livello API 34
Limita le notifiche di intent a schermo intero alle app che forniscono chiamate e sveglie. Utilizza l'API
NotificationManager.canUseFullScreenIntent
per verificare se la tua app dispone dell'autorizzazione. In caso contrario, la tua app può utilizzareACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
per aprire la pagina delle impostazioni dove gli utenti possono concedere l'autorizzazione.Modifica il modo in cui gli utenti utilizzano le notifiche non ignorabili consentendo loro di ignorare l'azione di notifica anche quando è impostato il flag
Notification.FLAG_ONGOING_EVENT
. Questo non si applica alle notificheCallStyle
se è impostato il flagNotification.FLAG_ONGOING_EVENT
o se sono presenti il controller dei criteri del dispositivo (DPC) e i pacchetti di supporto per le aziende. Inoltre, non si applica quando lo smartphone è bloccato o se l'utente seleziona Cancella tutto.