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 l'avanzamento senza aprire l'app. Il sistema promuove le notifiche degli aggiornamenti in tempo reale, anche se gli utenti possono ignorarle temporaneamente o retrocederle a notifiche standard. Le notifiche con priorità vengono visualizzate in modo più evidente sulle superfici di sistema, tra cui 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. Esempio di notifica di aggiornamento in tempo reale.

Le schede di notifica sponsorizzate hanno le seguenti caratteristiche di aspetto:

  • Espanso 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() verifica se il sistema può promuovere la notifica. Questo metodo non tiene conto del fatto che l'utente abbia disattivato gli aggiornamenti in tempo reale per l'app nelle impostazioni.
  • NotificationManager.canPostPromotedNotifications() controlla se la tua app può pubblicare una notifica pubblicitaria, ad esempio se l'utente l'ha attivata o disattivata nelle impostazioni.
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS è l'azione dell'intent che consente alle app di indirizzare 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 sensibili al fattore tempo.

Figura 2. Un aggiornamento in tempo reale nella schermata Home e nella schermata di blocco, nonché sotto forma di 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 verifica nel 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 le attività continue. 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 in corso, monitoraggio attivo del car sharing e monitoraggio attivo della consegna di cibo.
  • Utilizzi inappropriati:annunci, promozioni, messaggi chat, avvisi, eventi nel 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, come l'avvio di un allenamento, l'avvio della navigazione in auto o la prenotazione di un servizio di car sharing. Non mostrare informazioni ambientali, ad esempio quelle relative all'ambiente, agli interessi o agli 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 momento futuro. Ad esempio, se l'utente acquista i biglietti per un volo o un concerto, si iscrive a un torneo o indica in altro modo la sua futura partecipazione a un evento sensibile al fattore tempo. In questi casi, potrebbe essere opportuno mostrare automaticamente un aggiornamento in tempo reale all'inizio dell'evento programmato. Tuttavia, le app devono ottimizzare i trigger in modo che vengano visualizzati solo quando l'attività è imminente. Se l'utente indica esplicitamente che vuole 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 includere anche un'azione Sblocca 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 dagli aggiornamenti in tempo reale alle notifiche normali. Ad esempio, la visualizzazione di una notifica della carta d'imbarco è appropriata 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 nel luogo dell'evento o una volta iniziato l'imbarco. Al contrario, un aggiornamento in tempo reale non è appropriato per il monitoraggio di un pacco, poiché l'utente non ha bisogno di monitorarlo costantemente.

Pratiche UX

Utilizza l'icona del tracker per visualizzare lo stato. Questo può essere aggiornato dinamicamente.

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

Quando l'orario di arrivo stimato è in fase di calcolo o non è ancora disponibile, non mostrare uno stato vuoto. Fornisci un testo segnaposto attivo come "Ragionamento…" o "Cambio percorso…" per indicare che il sistema è in funzione, come mostrato nell'esempio.

stato non vuoto per mostrare il ragionamento
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 trasmettere informazioni importanti sullo stato della notifica incentrata sull'avanzamento.

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 il tempo

L'ora attiva 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 di quando in varie situazioni:

  • L'orario è almeno 2 minuti nel futuro: se l'ora corrente è 10:05 e l'orario è impostato su 10:10, il chip mostra 5 min.
  • Quando l'ora è nel passato: il testo non viene mostrato.
  • Quando utilizzi Chronometer, nel chip può essere visualizzato un timer per il tempo. Consulta setUsesChronometer e setChronometerCountdown. Il timer del cronometro viene visualizzato nel chip finché è positivo.
  • Non vuoi che l'ora venga visualizzata nella notifica: utilizza setShowWhen per FALSE.

Aspetto del chip di stato

L'icona di stato include sempre un'icona e, facoltativamente, un testo. Il chip ha una larghezza massima di 96 dp. Il testo verrà visualizzato solo se l'intero testo può essere inserito nel chip. Il testo viene visualizzato in base ai seguenti criteri:

  • Se il testo contiene meno di 7 caratteri, mostralo per intero.
  • Se viene visualizzato meno della metà del testo, mostra solo l'icona.
  • Se viene visualizzata più della metà del testo, mostra il maggior numero possibile di caratteri.

Wear OS

Gli aggiornamenti in tempo reale vengono trasferiti ad alcuni dispositivi Wear OS connessi. Per indicazioni su questo comportamento di bridging e su come creare aggiornamenti in tempo reale locali per Wear OS, consulta la guida agli aggiornamenti in tempo reale di Wear OS.

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 evitare che gli utenti disattivino 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 con queste API.

Domande frequenti

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

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

Risposta: il punto bianco alla fine della barra di avanzamento segnala 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 la UX coerenti, in quanto il loro comportamento varia in modo significativo a seconda delle versioni di Android e dei produttori di dispositivi. Evita le notifiche personalizzate utilizzando RemoteViews.