Android 11 aggiunge il supporto per la personalizzazione del comportamento e del posizionamento delle notifiche di conversazione nella schermata delle notifiche in base alla priorità e al livello di avviso, consentendo di contrassegnare le conversazioni come importanti e di avviare bolle specifiche per conversazione nello spazio di conversazione.
Sulla base di queste funzionalità di Android 11, Android 12 offre due nuove funzionalità di Conversazione:
La funzionalità Conversazioni recenti nelle 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, fornendo una rapida visualizzazione delle conversazioni recenti.
Questo documento descrive gli aspetti di implementazione, personalizzazione e convalida delle notifiche e dei widget di conversazione.
Panoramica delle notifiche delle conversazioni
Android 11 introduce una nuova primitiva di sistema, la Conversazione, rappresentata dall'oggetto scorciatoia di condivisione esistente (implementato con Android 9).
La primitiva Conversations può essere utilizzata come segue:
Condividere i dati delle conversazioni tra le app nel sistema tramite Sharesheet (già in Android 10).
Per le bolle di guida(scorciatoie in Android 11). Vedi la Figura 1.
Per partecipare al nuovo spazio di conversazione sopra la schermata di notifica (implementata in Android 11). Vedi Figura 2.
Per la creazione di widget di conversazione (implementati in Android 12).
Figura 1: la notifica viene avviata sotto forma di fumetto dal riquadro a scomparsa delle notifiche
Figura 2: spazio di conversazione situato sopra l'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 di 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 di bolla specifico per la conversazione.
I partner che implementano Conversazioni sono tenuti a implementare anche le 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 delle conversazioni alla loro specifica UI Il partner non deve modificare o implementare estensioni/codice/driver/HAL.
Vedi 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 vedono le notifiche nella nuova sezione e possono personalizzarle per conversazione anziché tramite il NotificationChannel generico.
Le bolle specifiche per conversazione funzionano.
Per convalidare l'implementazione, utilizza i seguenti test nel pacchetto di notifiche:
Test CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Test di CTS Verifier.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Panoramica dei widget di conversazione
In Android 12, la funzionalità del widget conversazione si basa sulle rappresentazioni di conversazione create in Android 11 (come descritto nella sezione precedente) consentendo alle app di fornire lo stato delle conversazioni visualizzate nei widget conversazione.
Figura 3: conversazioni visualizzate nei widget di conversazione
La funzionalità Widget di conversazione in Android 12 favorisce la connessione consentendo agli utenti di aprire facilmente le chat nella schermata Home. I widget sono scorciatoie avanzate che consentono agli utenti di tornare alle loro conversazioni in modo efficiente, 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 uno di dimensioni migliori quando l'utente modifica le dimensioni del layout o ruota lo schermo in orizzontale. - Utilizza
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
,minResizeHeight
per limitare correttamente le modifiche delle dimensioni dei widget.
- Utilizza
Tieni presente le seguenti dipendenze durante l'implementazione dei 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 implementazioni di nuovi dispositivi sia per quelle di 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). Quest'ultima 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à dei widget di conversazione non può essere attivata o disattivata. Tuttavia, un partner può modificare i layout dei modelli di widget, a condizione che i requisiti GMS siano soddisfatti.
Convalida
Per assicurarti che la versione della funzionalità funzioni come previsto, verifica quanto segue:
Se premi a lungo il Avvio app, puoi aggiungere un nuovo widget Conversazione per una conversazione tramite il selettore dei widget. Consulta la figura 4 per l'interfaccia utente del selettore di widget:
Figura 4: UI del selettore widget per aggiungere un nuovo widget Conversazione
Quando si inviano notifiche al dispositivo dalla conversazione selezionata, il widget viene aggiornato in modo da riflettere queste notifiche.
Nell'applicazione degli stati a quella conversazione utilizzando l'API
ConversationStatus
, il widget riflette questi stati.Gli utenti possono ridimensionare widget e widget possono cambiare le loro dimensioni in base all' Avvio app corrente. I layout dei widget devono funzionare bene con dimensioni diverse del Avvio su dispositivi diversi e con il ridimensionamento del widget.
Per convalidare l'implementazione, utilizza i seguenti test nel pacchetto di notifiche:
Test CTS (PeopleManagerTest) per le API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Test manuali per il requisito GMS: conversazioni.