Powiadomienia i widżety dotyczące rozmów

Android 11 umożliwia dostosowywanie zachowania i umiejscowienia powiadomień o rozmowach na panelu powiadomień według priorytetu i poziomu alertu. Dzięki temu rozmowy można oznaczać jako ważne i uruchamiać w przestrzeni rozmowy dymki dotyczące konkretnych rozmów.

Android 12, który bazuje na tych funkcjach Androida 11, oferuje 2 nowe funkcje rozmów:

  • Funkcja Ostatnie rozmowy w Ustawieniach umożliwia użytkownikom dostosowywanie działania powiadomień dotyczących ostatnich rozmów bez czekania na powiadomienie.

  • Funkcja widżetu rozmów umożliwia użytkownikom łatwe otwieranie czatów na ekranie głównym, co pozwala szybko przeglądać ostatnie rozmowy.

W tym dokumencie opisujemy aspekty implementacji, dostosowywania i weryfikacji powiadomień i widżetów dotyczących rozmów.

Omówienie powiadomień w rozmowach

Android 11 wprowadza nowy element systemowy, czyli konwersację, która jest reprezentowana przez istniejący obiekt skrótu do udostępniania (wprowadzony w Androidzie 9).

Element Conversations może być używany w ten sposób:

  • Udostępnianie danych z aplikacji do obsługi rozmów między aplikacjami w systemie za pomocą arkusza udostępniania (dostępnego już w Androidzie 10).

  • Do jazdy w wyskakujących okienkach(skrótach w Androidzie 11). Zobacz rysunek 1.

  • Aby uczestniczyć w nowym pokoju rozmów u góry panelu powiadomień (wprowadzonym w Androidzie 11). Zobacz rysunek 2.

  • Do tworzenia widżetów rozmów (wdrożonych w Androidzie 12).

    conv_bubbles

    Ilustracja 1. Powiadomienie uruchamiane jako dymek z panelu powiadomień

    conv_notification

    Ilustracja 2. Przestrzeń do rozmów u góry obszaru powiadomień

Oprócz linku do skrótu reprezentującego rozmowę powiadomienie korzysta też z MessagingStyle, aby uwzględnić ostatnią wiadomość z rozmowy w przestrzeni Rozmowy.

Partnerzy GMS muszą wdrożyć te funkcje:

  • Nowy pokój do rozmów jako osobna sekcja u góry obszaru powiadomień.
  • Styl powiadomień, który umożliwia i obsługuje wzorzec dymków w określonej rozmowie.

Partnerzy, którzy wdrażają funkcję Rozmowy, muszą też wdrożyć funkcję Ważne rozmowy. Wdrożenie funkcji Rozmowy może być jednak zgodne z koncepcjami OEM o podobnym charakterze. Ogólnie rzecz biorąc, partnerzy mogą dostosować sekcję rozmowy do swojego interfejsu systemu. Partner nie musi modyfikować ani wdrażać kodu HAL/sterownika/jądra/rozszerzeń.

Zobacz tę implementację referencyjną w sekcjach SystemUI i PeopleService w 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/

Weryfikacja

Aby mieć pewność, że Twoja wersja funkcji działa prawidłowo, sprawdź, czy:

  1. Aplikacje, które w pełni obsługują interfejs Conversation API, wyświetlają powiadomienia w nowej sekcji i mogą dostosowywać te powiadomienia według rozmowy, a nie według ogólnego NotificationChannel.

  2. Dymki dotyczące konkretnych rozmów działają.

Aby sprawdzić wdrożenie, użyj tych testów w pakiecie powiadomień:

  • testy CTS,

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • testy CTS Verifier.

    cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
    
    

Omówienie widżetów rozmów

W Androidzie 12 funkcja widżetu rozmowy jest rozszerzeniem reprezentacji rozmów utworzonych w Androidzie 11 (jak opisano w poprzedniej sekcji), ponieważ umożliwia aplikacjom podawanie stanu tych rozmów, które są wyświetlane w widżetach rozmowy.

conv_widgets

Ilustracja 3. Rozmowy wyświetlane w widżetach rozmów

Funkcja widżetu do rozmów w Androidzie 12 ułatwia kontaktowanie się z innymi, ponieważ pozwala użytkownikom łatwo otwierać czaty na ekranie głównym. Widżety to ulepszone skróty, które umożliwiają użytkownikom szybki powrót do rozmów, a jednocześnie wyświetlają fragmenty stanu rozmowy.

Partner musi wdrożyć te elementy:

  1. Widżet dostarczony przez SystemUI.
  2. Procedura dodawania tych widżetów na ekranie wyboru widżetów.
  3. Obsługa zmiany rozmiaru widżetu:

Podczas wdrażania widżetów do rozmów pamiętaj o tych zależnościach:

  • Partner nie musi modyfikować ani wdrażać kodu HAL/sterownika/jądra.
  • Do wdrożenia używany jest interfejs Status API, który umożliwia aplikacjom dodawanie informacji o stanie lub dostępności do rozmowy i powiązanego z nią widżetu.
  • Proces jest taki sam w przypadku wdrożeń na nowych urządzeniach i wdrożeń aktualizacji.
  • Funkcja widżetów rozmów jest zależna od nowej funkcji, która zostanie wprowadzona w Androidzie 12 i która buforuje ostatnio wyświetlane rozmowy (np. z powiadomień). Ta ostatnia funkcja pozwala rozszerzyć listę rozmów, które użytkownik może dodać do ekranu głównego.

Zapoznaj się z tą implementacją referencyjną w plikach SystemUI i 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/

Dostosowywanie

Funkcji widżetów rozmów nie można włączać ani wyłączać. Partner może jednak zmieniać układy szablonów widżetów, o ile spełnia wymagania GMS.

Weryfikacja

Aby mieć pewność, że Twoja wersja funkcji działa prawidłowo, sprawdź, czy:

  1. Po naciśnięciu i przytrzymaniu ikony Launchera w selektorze widżetów można dodać nowy widżet rozmowy. Interfejs selektora widżetów pokazano na rysunku 4:

    widget_picker

    Ilustracja 4. Interfejs selektora widżetów umożliwiający dodanie nowego widżetu rozmów

  2. Po wysłaniu powiadomień na urządzenie z wybranej rozmowy widżet zostanie zaktualizowany, aby odzwierciedlać te powiadomienia.

  3. Po zastosowaniu stanów do tej rozmowy za pomocą interfejsu API ConversationStatus widżet odzwierciedla te stany.

  4. Użytkownicy mogą zmieniać rozmiar widżetów, a widżety mogą zmieniać rozmiar w zależności od bieżącego programu uruchamiającego. Układy widżetów muszą dobrze działać w przypadku różnych rozmiarów Launchera na różnych urządzeniach i przy zmianie rozmiaru widżetu.

Aby sprawdzić wdrożenie, użyj tych testów w pakiecie powiadomień:

  • Testy CTS (PeopleManagerTest) dla interfejsów API.

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • Testy ręczne dotyczące wymagań GMS – rozmowy.