Android 11 aggiunge il supporto per la personalizzazione del comportamento e del posizionamento delle notifiche di conversazione nella sezione delle notifiche in base a priorità e livello di avviso, consentendo di contrassegnare le conversazioni come importanti e di avviare bolle specifiche per le conversazioni nello spazio Conversazioni.
Basandosi su queste funzionalità di Android 11, Android 12 offre due nuove funzionalità per le conversazioni:
La funzionalità Conversazioni recenti in Impostazioni consente agli utenti di personalizzare il comportamento delle notifiche per le conversazioni recenti senza attendere una notifica.
La funzionalità Widget conversazione consente agli utenti di aprire facilmente le chat nella schermata Home, offrendo una rapida visualizzazione delle conversazioni recenti.
Questo documento descrive gli aspetti di implementazione, personalizzazione e convalida di widget e notifiche delle conversazioni.
Panoramica delle notifiche delle conversazioni
Android 11 introduce una nuova primitiva di sistema, la conversazione, rappresentata dall'oggetto scorciatoia per la condivisione esistente (implementato con Android 9).
Il primitivo Conversazioni può essere utilizzato nel seguente modo:
Per condividere i dati di Conversazioni tra le app del sistema tramite Sharesheet (già presente in Android 10).
Per le bolle di guida(scorciatoie in Android 11). Vedi Figura 1.
Per partecipare al nuovo spazio Conversazione nella parte superiore della scheda Notifiche (implementata in Android 11). Vedi Figura 2.
Per la creazione di widget di conversazione (implementati in Android 12).

Figura 1: notifica avviata come bolla dal riquadro delle notifiche

Figura 2: spazio Conversazioni nella parte superiore dell'area notifiche
Oltre a collegarsi alla scorciatoia che rappresenta la conversazione, la notifica utilizza anche MessagingStyle per includere l'ultimo messaggio della conversazione nello spazio Conversazione.
I partner GMS sono tenuti a implementare quanto segue:
- Un nuovo spazio Conversazioni come sezione separata nella parte superiore dell'area notifiche.
- Uno stile di notifica che consente e supporta il pattern a bolle specifico per le conversazioni.
I partner che implementano Conversazioni devono implementare anche Conversazioni importanti. Tuttavia, l'implementazione di Conversazioni può essere allineata ai concetti OEM di natura simile. In generale, i partner hanno la libertà di allineare la sezione della conversazione alla loro UI di sistema specifica. Il partner non deve modificare o implementare HAL/driver/estensioni/codice kernel.
Consulta la seguente implementazione di riferimento nelle sezioni SystemUI e PeopleService in AOSP:
frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/
Convalida
Per assicurarti che la tua versione della funzionalità funzioni come previsto, verifica quanto segue:
Le app che supportano completamente l'API Conversation visualizzano le notifiche nella nuova sezione e possono personalizzarle per conversazione anziché per NotificationChannel generico.
Le bolle specifiche per le conversazioni funzionano.
Per convalidare l'implementazione, utilizza i seguenti test nel pacchetto di notifiche:
Test CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.javaTest di CTS Verifier.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Panoramica dei widget di conversazione
In Android 12, la funzionalità Widget conversazioni si basa sulle rappresentazioni delle conversazioni create in Android 11 (come descritto nella sezione precedente) consentendo alle app di fornire lo stato di queste conversazioni visualizzate nei widget conversazioni.
Figura 3: conversazioni visualizzate nei widget di conversazione
La funzionalità Widget Conversazioni di Android 12 promuove la connessione consentendo agli utenti di aprire facilmente le chat nella schermata Home. I widget sono scorciatoie avanzate che consentono agli utenti di tornare in modo efficiente alle loro conversazioni, mostrando al contempo snippet degli stati delle conversazioni.
Il partner deve implementare quanto segue:
- Un widget fornito da SystemUI.
- Un flusso per aggiungere questi widget dalla schermata di selezione dei widget.
- Supporto per il ridimensionamento dei widget come segue:
- Utilizza
onAppWidgetOptionsChanged()per modificare il layout in modo che abbia dimensioni migliori quando l'utente cambia le dimensioni del layout o passa all'orientamento orizzontale. - Utilizza
maxResizeHeight,maxResizeWidth,minWidth,minHeight,minResizeWidth,minResizeHeightper delimitare correttamente le modifiche alle dimensioni del widget.
- Utilizza
Tieni presente le seguenti dipendenze quando implementi i widget di conversazione:
- Il partner non deve modificare o implementare il codice HAL/driver/kernel.
- Per l'implementazione viene utilizzata l'API Status, che consente alle app di aggiungere informazioni sullo stato o sulla disponibilità a una conversazione e al widget associato.
- La procedura è la stessa sia per le nuove implementazioni dei dispositivi sia per l'implementazione degli upgrade.
- La funzionalità Widget conversazioni dipende da una nuova funzionalità lanciata in Android 12, che memorizza nella cache le conversazioni visualizzate di recente (ad esempio dalle notifiche). Questa seconda funzionalità consente di espandere l'elenco delle conversazioni che un utente potrebbe potenzialmente aggiungere alla schermata Home.
Consulta la seguente implementazione di riferimento nei file SystemUI e Launcher3:
frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/
Personalizzazione
La funzionalità Widget conversazione non può essere attivata o disattivata. Tuttavia, un partner può modificare i layout dei modelli di widget, a condizione che i requisiti di GMS siano soddisfatti.
Convalida
Per assicurarti che la tua versione della funzionalità funzioni come previsto, verifica quanto segue:
Se tieni premuto il tasto di avvio app, puoi aggiungere un nuovo widget Conversazione per una conversazione tramite il selettore dei widget. Vedi la Figura 4 per la UI del selettore widget:
Figura 4: UI del selettore dei widget per aggiungere un nuovo widget Conversazione
Quando vengono inviate notifiche al dispositivo dalla conversazione selezionata, il widget viene aggiornato per riflettere queste notifiche.
Quando applichi gli stati a quella conversazione utilizzando l'API
ConversationStatus, il widget riflette questi stati.Gli utenti possono ridimensionare i widget e questi possono cambiare le proprie dimensioni in base al Launcher corrente. I layout dei widget devono funzionare bene con le diverse dimensioni del launcher su dispositivi diversi e durante il ridimensionamento del widget.
Per convalidare l'implementazione, utilizza i seguenti test nel pacchetto di notifiche:
Test CTS (PeopleManagerTest) per le superfici API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.javaTest manuali per il requisito GMS - Conversazioni.