Creare una notifica di aggiornamento in tempo reale

Il sistema promuove le notifiche degli aggiornamenti live. 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.

Figura 1. Un esempio di notifica di aggiornamento live.

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

  • Espanso per impostazione predefinita
  • Non comprimibile

Per essere considerata un aggiornamento live, la notifica deve soddisfare i seguenti requisiti:

  • Deve essere Standard/Nessuno stile, BigTextStyle, CallStyle o ProgressStyle.
  • Deve richiedere la seguente autorizzazione non di runtime nel manifest Android android.permission.POST_PROMOTED_NOTIFICATIONS.
  • Deve richiedere la promozione utilizzando EXTRA_REQUEST_PROMOTED_ONGOING o NotificationCompat.Builder#requestPromotedOngoing.
  • Deve essere ongoing (imposta FLAG_ONGOING_EVENT).
  • Deve essere impostato un contentTitle.
  • NON deve avere impostato alcun customContentView (nessun RemoteViews).
  • NON deve essere il riepilogo di un gruppo che utilizza setGroupSummary.
  • Non deve setColorized a TRUE.
  • Il canale di notifica NON deve avere IMPORTANCE_MIN.

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 live per l'app nelle impostazioni.
  • NotificationManager.canPostPromotedNotifications() controlla se la tua app può pubblicare una notifica promozionale, 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 sensibili al tempo.

In corso

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

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

  • Usi appropriati: navigazione attiva, chiamate in corso, monitoraggio attivo di corse condivise e monitoraggio attivo di consegne di cibo.
  • Usi 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 in modo esplicito dall'utente, ad esempio l'inizio di un allenamento, l'avvio della navigazione o la richiesta di un servizio di trasporto con conducente. Non mostrare informazioni ambientali, ad esempio quelle relative all'ambiente, agli interessi o agli eventi futuri dell'utente, in un aggiornamento live. 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 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 futura partecipazione a un evento sensibile al fattore tempo. In questi casi, potrebbe essere opportuno mostrare automaticamente un aggiornamento live 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 live 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 l'evoluzione dello stato dell'attività.

Un aggiornamento live è spesso appropriato per le attività che passano dagli aggiornamenti live alle 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 all'aeroporto o al luogo dell'evento o quando è iniziato l'imbarco. Al contrario, un aggiornamento in tempo reale non è appropriato per il monitoraggio di un pacchetto, in quanto l'utente non deve monitorarlo costantemente.

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 2. Lo stato Indeterminato mostra la piccola icona Notification.Builder#setSmallIcon.
chip di stato con l'ora
Figura 3. Utilizza Notification.Builder#setShortCriticalText per mostrare l'ora assoluta.
Chip di stato con informazioni
Figura 4. Utilizza Notification.Builder#setShortCriticalText per comunicare informazioni importanti.

Quando

L'ora in cui viene attivata la notifica avvia un conto alla rovescia per la durata della notifica, a meno che non venga chiusa o aggiornata.

  • L'ora è almeno 2 minuti nel futuro: se l'ora attuale è le 10:05 e l'ora è impostata sulle 10:10, il chip indicherà "5 min".
  • Se l'ora è più di un minuto nel passato, la notifica non viene mostrata.
  • Utilizza setShowWhen per FALSE se non vuoi che la notifica visualizzata nella tendina abbia un orario.

Aspetto del chip di stato

Il chip di stato include sempre un'icona e, facoltativamente, del testo. Il chip ha una larghezza massima di 96 dp. Mostra il testo in base ai seguenti criteri:

  • Se contiene meno di 7 caratteri, mostra l'intero testo.
  • Se verrà visualizzato meno della metà del testo, mostra solo l'icona.
  • Se verrà visualizzata più della metà del testo, mostra la maggior quantità possibile di testo.

Dismissal

Gli utenti possono controllare la visibilità delle notifiche nella relativa ombra. 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 che l'utente ha chiuso. Utilizza setDeleteIntent per rilevare gli aggiornamenti ignorati.

Consulta l'app di esempio per sperimentare queste API.