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 rozszerza te funkcje Androida 11 o 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.
Widżet 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
W Androidzie 11 wprowadzono nowy element systemowy, czyli obiekt skrótu do udostępniania (wprowadzony w Androidzie 9), który reprezentuje rozmowę.
Element Conversations może być używany w ten sposób:
Udostępnianie danych z Konwersacji między aplikacjami w systemie za pomocą arkusza udostępniania (dostępnego już w Androidzie 10).
W przypadku dymków(skrótów w Androidzie 11) podczas jazdy. 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 rozmowy (zostały one wprowadzone w Androidzie 12).
Ilustracja 1. Powiadomienie uruchamiane jako dymek z panelu powiadomień
Rysunek 2. Miejsce na rozmowy u góry obszaru powiadomień
Oprócz linku do skrótu reprezentującego rozmowę powiadomienie używa też MessagingStyle, aby uwzględnić ostatnią wiadomość z rozmowy w przestrzeni Rozmowa.
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 specyficzny dla rozmowy.
Partnerzy, którzy wdrażają rozmowy, muszą też wdrożyć 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 zgodnie z oczekiwaniami, sprawdź, czy:
Aplikacje, które w pełni obsługują interfejs Conversation API, widzą powiadomienia w nowej sekcji i mogą dostosowywać te powiadomienia według rozmowy, a nie według ogólnego NotificationChannel.
Dymki w określonych rozmowach działają.
Aby sprawdzić implementację, użyj tych testów w pakiecie powiadomień:
testy CTS,
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Testy weryfikatora CTS.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Omówienie widżetów rozmów
W Androidzie 12 funkcja widżetu rozmowy wykorzystuje reprezentacje rozmów utworzone w Androidzie 11 (zgodnie z opisem w poprzedniej sekcji), umożliwiając aplikacjom podawanie stanu tych rozmów, które są wyświetlane w widżetach rozmowy.
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 stanów rozmów.
Partner musi wdrożyć te elementy:
- Widżet dostarczony przez SystemUI.
- Procedura dodawania tych widżetów na ekranie wyboru widżetów.
- Obsługa zmiany rozmiaru widżetów:
- Użyj
onAppWidgetOptionsChanged()
, aby zmienić układ na lepiej dopasowany, gdy użytkownik zmieni rozmiar układu lub obróci urządzenie do orientacji poziomej. - Użyj
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
,minResizeHeight
, aby prawidłowo ograniczyć zmiany rozmiaru widżetu.
- Użyj
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świetlone 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 zgodnie z oczekiwaniami, sprawdź, czy:
Po długim naciśnięciu Launchera w wybieraku widżetów można dodać nowy widżet rozmowy. Interfejs selektora widżetów znajdziesz na rysunku 4:
Ilustracja 4. Interfejs wyboru widżetów do dodawania nowego widżetu rozmów
Po wysłaniu powiadomień na urządzenie z wybranej rozmowy widżet zostanie zaktualizowany, aby odzwierciedlać te powiadomienia.
Po zastosowaniu stanów do tej rozmowy za pomocą interfejsu API
ConversationStatus
widżet odzwierciedla te stany.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 podczas zmiany rozmiaru widżetu.
Aby sprawdzić implementację, użyj tych testów w pakiecie powiadomień:
Testy CTS (PeopleManagerTest) dla platform interfejsu API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Testy ręczne dotyczące wymagań GMS – rozmowy.