Inicjatywa dotycząca osób i rozmów to wieloletnia inicjatywa Androida, której celem jest wyróżnienie osób i rozmów na ekranach systemu telefonu. Ten priorytet wynika z faktu, że komunikacja i współpraca z innymi osobami to nadal najbardziej ceniona i najważniejsza funkcja dla większości naszych użytkowników we wszystkich grupach demograficznych.
W Androidzie 11 wprowadzono kilka funkcji, które wspierają inicjatywę dotyczącą osób i rozmów.
Pokój rozmów
Na urządzeniach przenośnych nad panelem powiadomień znajduje się osobna sekcja z tylko rozmowami w czasie rzeczywistym (takimi jak połączenia i wiadomości na czacie, w tym czaty grupowe). Powiadomienia w tym pokoju wyglądają i działają inaczej niż powiadomienia z innych aplikacji na wielu telefonach:
- Projekt jest inny, z silnym naciskiem na awatara reprezentującego ludzi połączonego z aplikacją, w której toczy się rozmowa.
- Kliknięcie powiadomienia otwiera rozmowę w aplikacji (lub bąbelku, jeśli rozmowa była wcześniej w bąbelku). Kliknięcie strzałki w górę powoduje rozwinięcie nowych wiadomości w panelu do wyświetlania powiadomień do pełnej długości wraz z pełną listą opcji.
- Dostępne są działania związane z rozmową (niektóre z nich wymagają długiego naciśnięcia):
- Oznaczanie rozmowy jako priorytetowej
- Przekaż tę rozmowę do dymka (wyświetla się tylko wtedy, gdy aplikacja obsługuje dymki)
- Wycisz powiadomienia dotyczące tej rozmowy
- Ustaw niestandardowe dźwięki lub wibracje dla tej rozmowy.
Rozmowy w dymkach
Począwszy od Androida 11, bąble można uruchamiać z powiadomień w sekcji Rozmowy. Dymek może wyświetlać tylko powiadomienia z powiązanym skrótem. Rozmowy wyświetlają się jako dymek automatycznie, jeśli są oznaczone jako ważne lub są wywoływane jako dymek w pasku powiadomień.
Skróty rozmów
Skróty do rozmów są widoczne w menu uruchamiania i obok długoterminowych skrótów do udostępniania w panelu udostępniania.
Wytyczne dotyczące interfejsów API
W tej sekcji opisaliśmy interfejsy API, które umożliwiają dodanie w aplikacji obsługi pokoju udostępnianego przez system, w którym wyświetlają się osoby i rozmowy.
Skróty w Rozmowach
Aby móc korzystać z tej inicjatywy skoncentrowanej na rozmowach, aplikacje muszą udostępniać systemowi długotrwałe skróty. Zdecydowanie zalecamy używanie długotrwałych skrótów do udostępniania. W razie potrzeby możesz używać dynamicznych skrótów w Androidzie 11, ale w przyszłości możemy usunąć tę opcję.
Aby opublikować skrót w rozmowie, wywołaj metody ShortcutManagerCompat
setDynamicShortcuts()
, addDynamicShortcuts()
lub pushDynamicShortcut()
(które automatycznie zarządzają limitem skrótów dla dewelopera). Ten skrót musi być długotrwały i zawierać Person
dane dotyczące co najmniej 1 osoby, która jest identyfikowana przez innych uczestników rozmowy. Zalecamy też ustawienie parametru LocusIdCompat
.
Jeśli rozmowa nie istnieje, aplikacja może usunąć skrót removeLongLivedShortcuts()
. Spowoduje to usunięcie przez system wszystkich danych powiązanych z rozmową.
Chociaż skróty można usuwać, aplikacje nie powinny usuwać zapisanych w pamięci podręcznej skrótów, chyba że jest to absolutnie konieczne. Skróty są zapisywane w pamięci podręcznej, ponieważ użytkownik w jakimś stopniu z nich korzystał, a usunięcie skrótu spowoduje cofnięcie tych zmian i może zirytować użytkownika.
Powiadomienia w rozmowach
Powiadomienie jest uważane za powiadomienie o rozmowie, jeśli:
Powiadomienie używa
MessagingStyle
.(Tylko jeśli aplikacja jest przeznaczona na Androida 11 lub nowszego) Powiadomienie jest powiązane z obowiązującym długotrwałym dynamicznym lub wygenerowanym w pamięci podręcznej skrótem do udostępniania. Powiadomienie może ustawić to powiązanie, wywołując metodę
setShortcutId()
lubsetShortcutInfo()
. Jeśli aplikacja jest przeznaczona na Androida 10 lub starszego, powiadomienie nie musi być powiązane ze skrótem, jak opisano w sekcji opcje zastępcze.Użytkownik nie obniżył priorytetu rozmowy w sekcji rozmów w ramach ustawień kanału powiadomień w momencie publikowania.
Używanie LocusIdCompat
Inteligencja na urządzeniu określa rozmowy, którymi użytkownik jest najbardziej zainteresowany. Do najważniejszych sygnałów należą aktualność i częstotliwość sesji rozmów w każdej rozmowie. System wie o interakcjach z rozmową z poziomu skrótów w Menu lub powiadomienia, jeśli są odpowiednio otagowane. System nie wie jednak o rozmowach prowadzonych w aplikacji, chyba że te interakcje są też otagowane. Dlatego zdecydowanie zalecamy dołączenie LocusIdCompat
do skrótu i otagowanie aktywności lub fragmentu w aplikacji odpowiednim LocusIdCompat
. Użyj wartości LocusIdCompat
, aby umożliwić systemowi sugestii prawidłowe pozycjonowanie rozmowy oraz wyświetlanie prawidłowego czasu ostatniej interakcji użytkownika (w tym interakcji w aplikacji) z rozmową. Jeśli użyjesz setShortcutInfo()
, aby powiązać rozmowę z skrótem, system rozmów automatycznie dołączy odpowiednią LocusIdCompat
.
Wymagania dotyczące pokoju rozmów w przypadku aplikacji kierowanych na Androida 10 lub starszego
Jeśli aplikacja nie jest kierowana na Androida 11, jej wiadomości mogą być nadal wyświetlane w pokoju rozmów. Aplikacja musi jednak spełniać określone wymagania. W tej sekcji opisano wymagania dotyczące tych aplikacji oraz zachowanie domyślne, jeśli aplikacja nie spełnia wymagań.
Podstawowym wymogiem udziału w systemie przesyłania wiadomości jest to, że aplikacja musi implementować powiadomienia MessagingStyle
, a powiadomienia te muszą zawierać odwołanie do długotrwałego skrótu z powiadomienia opublikowanego w momencie opublikowania powiadomienia. Powiadomienia, które spełniają te wymagania, pojawiają się w pokoju z rozmową w następujący sposób:
- Powiadomienie jest wyświetlane w stylu konwersacji.
- Przycisk Bubble jest dostępny, jeśli został zaimplementowany
- Funkcje specyficzne dla rozmowy są dostępne w ramach konwersacji.
Jeśli powiadomienie nie spełnia tych wymagań, platforma używa opcji zapasowych do formatowania powiadomienia. Jeśli powiadomienie spełnia wymagania w przypadku obu alternatyw, wyświetla się w miejscu rozmowy ze specjalnym formatowaniem. Jeśli powiadomienie nie kwalifikuje się do żadnej opcji zastępczej, nie jest wyświetlane w obszarze rozmowy.
Wartość domyślna: jeśli używany jest styl wiadomości, ale nie podano skrótu
Jeśli aplikacja jest przeznaczona na Androida 10 lub starszego, a powiadomienie używa
MessagingStyle
, ale nie wiąże wiadomości ze skrótem, powiadomienie jest wyświetlane w pokoju z takimi ustawieniami:
- Powiadomienie jest wyświetlane w stylu konwersacji.
- Brak przycisku w bąbelku
- Brak funkcji związanych z poszczególnymi rozmowami.
Wartość domyślna: jeśli nie używasz atrybutu MessagingStyle, ale aplikacja jest rozpoznawaną aplikacją do wysyłania wiadomości
Jeśli powiadomienie nie używa parametru
MessagingStyle
ale aplikacja jest rozpoznawana przez platformę jako aplikacja do obsługi wiadomości, a parametr
category
powiadomienia ma ustawioną wartość
msg
,
powiadomienie jest wyświetlane w miejscu konwersacji z takim zachowaniem:
- Powiadomienie jest wyświetlane w starym stylu sprzed Androida 11
- Brak przycisku w bąbelku
- Brak funkcji związanych z poszczególnymi rozmowami.
Wskazówki, użytkowanie i testowanie
W tej sekcji znajdziesz ogólne wskazówki dotyczące używania i testowania funkcji konwersacji.
Kiedy warto używać rozmów?
Powiadomienia o rozmowie i powiązane skróty mają na celu poprawę działania funkcji rozmów w czasie rzeczywistym. Na przykład SMS-y, czaty tekstowe i rozmowy telefoniczne to rozmowy w czasie rzeczywistym, w których użytkownicy oczekują szybkiej komunikacji. Użytkownicy nie oczekują tego w przypadku e-maili i działań niezwiązanych z konwersacjami.
Daliśmy użytkownikom możliwość usunięcia danej rozmowy z sekcji rozmowy, jeśli nie sądzą, że znajduje się ona we właściwym pokoju.
Sprawdzone metody
Aby zwiększyć zaangażowanie i ułatwić użytkownikom interakcję z ludźmi oraz rozmowami na temat Twojej aplikacji, zalecamy stosowanie się do tych sprawdzonych metod.
- Aby mieć pewność, że nieodebrane połączenia są wyświetlane w priorytetowym okienku czatu i prawidłowo pojawiają się w widżecie konwersji, sformatuj powiadomienia o nieodebranych połączeniach jako
conversations
z ustawioną kategoriąCATEGORY_MISSED_CALL
. - Użytkownikom należy udostępnić wysokiej jakości awatary (104 dp); w przeciwnym razie system będzie używać ich inicjałów, co jest mniej angażujące.
- Nie wysyłaj
cancel
powiadomienia o rozmowie, dopóki użytkownik nie zobaczy wiadomości. Jednym z takich przykładów jest anulowanie powiadomienia podczas otwierania aplikacji w widoku, w którym użytkownik nie może zobaczyć ani obsłużyć wiadomości. Jeśli użytkownik nie ma możliwości przeczytania lub odpowiedzi na wiadomość, anulowane powiadomienie i powiązana z nim bańka zostaną usunięte, co spowoduje utratę kontekstu rozmowy. - Podaj identyfikator URI
data
z metadanymi związanymi z MIME powiązanymi z wiadomościami, co daje Ci możliwość zapewnienia bogatszych powiadomień. - Użyj interfejsu API
Android 12 status
, aby uczynić widżety konwersacji bardziej angażujące. - Stosuj te sprawdzone metody dotyczące skrótów w rozmowach.
- publikować skróty do przychodzących i wychodzących rozmów w aplikacji, które nie wysyłają powiadomień push; Wiadomości przychodzące i wychodzące w ramach tej samej rozmowy powinny mieć ten sam identyfikator skrótu. Użyj
pushDynamicShortcut()
, aby opublikować skróty i zgłosić ich użycie. - Aby uniknąć przypadkowego przycięcia awatara skrótu, podaj
AdaptiveIconDrawable
dla ikony skrótu. Więcej informacji znajdziesz w artykule Przygotowanie obrazów skrótów. - Aby pomóc systemowi promować skrót, postępuj zgodnie z wytycznymi dotyczącymi uzyskiwania najlepszego rankingu. Skrót jest klasyfikowany na różnych platformach systemowych, w tym na stronie udostępniania w Androidzie, jeśli jest to skrót do udostępniania.
- Upewnij się, że skróty do rozmów
intents
otwierają się bezpośrednio w odpowiedniej rozmowie. - Użyj bibliotek kompatybilności, aby wygodnie ustawić skróty jako powiązane z kartą
conversation
.
- publikować skróty do przychodzących i wychodzących rozmów w aplikacji, które nie wysyłają powiadomień push; Wiadomości przychodzące i wychodzące w ramach tej samej rozmowy powinny mieć ten sam identyfikator skrótu. Użyj
Testowanie powiadomień i skrótów w rozmowach
Jeśli postępujesz zgodnie z wytycznymi dotyczącymi pokoju rozmów, rozmowy powinny automatycznie pojawiać się w pokoju rozmów. Aby sprawdzić, czy skrót jest prawidłowo zintegrowany, naciśnij i przytrzymaj powiadomienie. Jeśli integracja została przeprowadzona prawidłowo, interfejs będzie zawierać działania związane z rozmową. Jeśli powiadomienie nie jest połączone z skrótem, interfejs wyświetla tekst informujący, że aplikacja nie obsługuje funkcji rozmów.
Dodane skróty wyświetlają się po naciśnięciu i przytrzymaniu menu z aplikacjami. Sprawdź, czy skróty prowadzą do odpowiedniego miejsca w aplikacji.
Dodane skróty do udostępniania są wyświetlane w wierszu bezpośredniego udostępniania w arkuszu udostępniania, gdy udostępniasz treści, które skrót do udostępniania może otrzymać.
Widżety rozmów
W Androidzie 12 widżet rozmów opiera się na funkcji dotyczącej osób i rozmów wprowadzonej w Androidzie 11. Umożliwia on aplikacjom wyświetlanie stanu rozmów w widżetach rozmów.
Widżety rozmów zachęcają użytkowników do interakcji, ponieważ umożliwiają łatwe otwieranie czatów na ekranie głównym. Te widżety to ulepszone skróty, które umożliwiają użytkownikom szybkie wracanie do rozmów, a także wyświetlanie fragmentów stanu rozmowy i innych istotnych informacji.
Sprawdzanie, czy aplikacja obsługuje widżety rozmów
Aby sprawdzić, czy Twoja aplikacja obsługuje widżety rozmów, musisz mieć co najmniej 2 urządzenia z Androidem 12 i 2 konta użytkowników (po 1 na każdym urządzeniu), aby wymieniać się wiadomościami. Na potrzeby tej procedury konta będą nazywać się „Użytkownik A” i „Użytkownik B”.
Wykonaj te czynności:
- Na urządzeniu użytkownika A przytrzymaj uruchamiacz. W selektorze widżetów kliknij nowy widżet rozmowy, jak pokazano na rysunku 2.
- Przeciągnij widżet na ekran główny. Użytkownik A powinien mieć możliwość wybrania listy aktywnych lub ostatnich rozmów z aplikacji.
- Teraz na urządzeniu użytkownika B wyślij wiadomość testową do użytkownika A.
- Na urządzeniu użytkownika A sprawdź, czy widżet został zaktualizowany, aby odzwierciedlać powiadomienie o wiadomości od użytkownika B.
- Opcjonalnie: zarówno użytkownik A, jak i użytkownik B mogą ustawić rozmowę na różne wartości stanu, aby mieć pewność, że ich widżety będą je odpowiednio odzwierciedlać. Listę wartości stanu znajdziesz w kolumnie ConversationStatus.