Creare notifiche di aggiornamento in tempo reale

Gli aggiornamenti in tempo reale forniscono un riepilogo degli aggiornamenti importanti in modo che gli utenti possano monitorare i progressi senza aprire l'app. Il sistema promuove le notifiche degli aggiornamenti in tempo reale, anche se gli utenti possono ignorare o declassare temporaneamente una notifica di aggiornamento in tempo reale a una notifica standard. Le notifiche promosse vengono visualizzate in modo più evidente sulle superfici di sistema, ad esempio nella parte superiore del riquadro a scomparsa delle notifiche e della schermata di blocco, nonché come chip nella barra di stato. Le notifiche degli aggiornamenti in tempo reale devono seguire i principi delle notifiche per fornire informazioni brevi, tempestive e pertinenti.

Figura 1. Un esempio di notifica di aggiornamento in tempo reale.

Le schede delle notifiche promosse hanno le seguenti caratteristiche di aspetto:

  • Espansa per impostazione predefinita
  • Non comprimibile

La notifica deve soddisfare i seguenti requisiti per essere considerata un aggiornamento in tempo reale:

Caratteristiche della promozione

Le seguenti API ti aiutano a determinare se il sistema promuoverà la tua notifica:

  • Notification.FLAG_PROMOTED_ONGOING indica se la notifica è promossa.
  • Notification.hasPromotableCharacteristics() convalida se il sistema può promuovere la notifica. Questo metodo non considera se l'utente ha disattivato gli aggiornamenti in tempo reale per l'app nelle impostazioni.
  • NotificationManager.canPostPromotedNotifications() verifica se la tua app può pubblicare una notifica promossa, ad esempio se l'utente l'ha attivata o disattivata nelle impostazioni.
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS è l'azione intent che consente alle app di inviare gli utenti alle Impostazioni per attivare questa funzionalità.

Criteri di utilizzo

Utilizza gli aggiornamenti in tempo reale per le attività in corso, avviate dall'utente e urgenti.

Figura 2. Un aggiornamento in tempo reale nella schermata Home e nella schermata di blocco, nonché come chip.

In corso

Un aggiornamento in tempo reale deve rappresentare un'attività in corso, con un inizio e una fine distinti. Se un'attività si è svolta in passato, non utilizzare un aggiornamento in tempo reale. Utilizza invece una notifica standard. Questo vale anche per gli eventi che non sono ancora iniziati, anche se gli eventi che stanno per iniziare possono utilizzare un aggiornamento in tempo reale.

Gli aggiornamenti in tempo reale rappresentano attività in corso. Non utilizzare gli aggiornamenti in tempo reale per offrire un accesso accelerato alle funzionalità dell'app. Se vuoi farlo, utilizza un widget dell'app o un riquadro Impostazioni rapide personalizzato.

  • Utilizzi appropriati: navigazione attiva, chiamate telefoniche in corso, monitoraggio attivo di corse condivise e monitoraggio attivo di consegne di cibo.
  • Utilizzi inappropriati: annunci, promozioni, messaggi di chat, avvisi, eventi di calendario imminenti e accesso rapido alle funzionalità dell'app.

Avviato dall'utente

La maggior parte degli aggiornamenti in tempo reale deve rappresentare attività attivate esplicitamente dall'utente, ad esempio l'inizio di un allenamento, l'avvio della Navigazione Auto o la richiesta di una corsa condivisa. Non mostrare informazioni ambientali, ad esempio sull'ambiente, sugli interessi o sugli eventi imminenti dell'utente, in un aggiornamento in tempo reale. Non consentire alle attività attivate da altre parti di generare aggiornamenti in tempo reale.

A volte, un utente potrebbe eseguire un'azione che avvia un'attività per un periodo di tempo in futuro. Ad esempio, se l'utente acquista biglietti per un volo o un concerto, si iscrive a un torneo o indica in altro modo la sua partecipazione futura a un evento urgente. In questi casi, potrebbe essere appropriato mostrare automaticamente un aggiornamento in tempo reale all'inizio dell'evento programmato. Tuttavia, le app devono regolare i trigger in modo che vengano visualizzati solo quando l'attività è imminente. Se l'utente indica esplicitamente di voler iniziare a monitorare un evento in background, ad esempio una partita sportiva, puoi iniziare a pubblicare aggiornamenti in tempo reale per quell'evento. Tuttavia, devi anche includere un'azione Rimuovi nella notifica associata.

Urgente

Mostra un aggiornamento in tempo reale solo se richiede l'attenzione dell'utente durante l'attività. Un caso d'uso chiave per gli aggiornamenti in tempo reale è il monitoraggio, quando l'utente trae un vantaggio significativo dal dare un'occhiata all'aggiornamento in tempo reale per tenere d'occhio lo stato in evoluzione dell'attività.

Un aggiornamento in tempo reale è spesso appropriato per le attività che passano da aggiornamenti in tempo reale a notifiche normali. Ad esempio, mostrare una notifica della carta d'imbarco è appropriato molte ore prima del volo di un utente, ma la notifica deve diventare un aggiornamento in tempo reale solo quando l'utente ha un'esigenza urgente, ad esempio quando è arrivato in aeroporto o nella sede dell'evento o quando è iniziato l'imbarco. Al contrario, un aggiornamento in tempo reale non è appropriato per monitorare un pacco, poiché l'utente non ha bisogno di monitorarlo costantemente.

Pratiche UX

Utilizza l'icona del tracker per visualizzare lo stato. Può essere aggiornata dinamicamente.

tracker personalizzato su una barra di avanzamento
Figura 3. Un'icona del tracker personalizzata.

Quando un ETA è in fase di calcolo o non è ancora disponibile, non mostrare uno stato vuoto. Fornisci un testo segnaposto attivo, ad esempio "Sto pensando..." o "Sto ricalcolando il percorso...", per indicare che il sistema è in funzione, come mostrato nell'esempio.

stato non vuoto per mostrare il caricamento
Figura 4. Uno stato non vuoto per l'aggiornamento in tempo reale.

Chip di stato

I chip di stato consentono agli utenti di tenere traccia degli aggiornamenti in tempo reale quando la notifica non è visibile. Utilizza setShortCriticalText o setWhen per comunicare informazioni importanti sullo stato della notifica incentrata sui progressi.

chip di stato con icona
Figura 5. Lo stato indeterminato mostra l'icona piccola, Notification.Builder#setSmallIcon.
chip di stato con l'ora
Figura 6. Utilizza Notification.Builder#setShortCriticalText per mostrare l'ora assoluta.
Chip di stato con informazioni
Figura 7. Utilizza Notification.Builder#setShortCriticalText per comunicare informazioni importanti.

Quando

L'ora di attivazione avvia un conto alla rovescia per la durata della notifica, a meno che la notifica non venga ignorata o aggiornata. I seguenti punti descrivono il funzionamento dell'ora di attivazione in varie situazioni:

  • L'ora di attivazione è di almeno 2 minuti in futuro: se l'ora attuale è le 10:05 e l'ora di attivazione è impostata sulle 10:10, il chip indica 5 min.
  • L'ora di attivazione è nel passato: il testo non viene mostrato.
  • Quando si utilizza il cronometro per l'ora di attivazione, è possibile visualizzare un timer nel chip. Consulta setUsesChronometer e setChronometerCountdown. Il timer del cronometro viene mostrato nel chip finché è positivo.
  • Non vuoi che l'ora di attivazione venga visualizzata nella notifica: utilizza setShowWhen impostato su FALSE.

Aspetto del chip di stato

Il chip di stato include sempre un'icona e, facoltativamente, del testo. La larghezza massima del chip è di 96 dp. Il testo verrà mostrato solo se può essere contenuto interamente nel chip. Il testo viene visualizzato in base ai seguenti criteri:

  • Se il testo è inferiore a 7 caratteri, viene visualizzato interamente.
  • Se verrà visualizzata meno della metà del testo, viene mostrata solo l'icona.
  • Se verrà visualizzata più della metà del testo, viene mostrata la maggior quantità di testo possibile.

Dismissal

Gli utenti possono controllare la visibilità delle notifiche nell'area notifiche. La pubblicazione di aggiornamenti in tempo reale indesiderati potrebbe indurre gli utenti a revocare l'autorizzazione di pubblicazione di un'app.

Per impedire agli utenti di disattivare completamente gli aggiornamenti in tempo reale, evita di pubblicare aggiornamenti che gli utenti potrebbero ignorare. Non ripubblicare gli aggiornamenti in tempo reale ignorati dall'utente. Utilizza setDeleteIntent per rilevare gli aggiornamenti ignorati.

Consulta l'app di esempio per sperimentare queste API.

Domande frequenti

Domanda: cos'è il punto bianco alla fine della barra di avanzamento?

Indicatore di visualizzazione dell'accessibilità della fine dell'avanzamento
Figura 8. Visualizzazione dell'accessibilità alla fine del percorso

Risposta: il punto bianco alla fine della barra di avanzamento indica visivamente la fine della barra di avanzamento.

Domanda: perché le notifiche personalizzate non sono supportate per gli aggiornamenti in tempo reale?

Risposta: le notifiche personalizzate rendono difficili i test e l'esperienza utente coerenti, poiché il loro comportamento varia in modo significativo tra le versioni di Android e i produttori di dispositivi. Evita le notifiche personalizzate che utilizzano RemoteViews.