Powiadomienia na Wear OS

Powiadomienia na zegarkach korzystają z tych samych interfejsów API i mają taką samą strukturę jak powiadomienia na telefonach.

Powiadomienia mogą pojawiać się na zegarku na 2 sposoby:

  1. Aplikacja mobilna tworzy powiadomienie, a system automatycznie przekazuje to powiadomienie na zegarek.
  2. Aplikacja na urządzenie do noszenia tworzy powiadomienie.

W obu przypadkach do tworzenia powiadomień używaj klasy NotificationCompat.Builder. Gdy tworzysz powiadomienia za pomocą klasy kreatora, system dba o ich prawidłowe wyświetlanie. Na przykład, gdy wyślesz powiadomienie z aplikacji mobilnej, każde powiadomienie pojawi się w strumieniu powiadomień w postaci karty.

Zapoznaj się z przykładem poniżej, aby zobaczyć, jak wyświetlają się powiadomienia. notification-cards

Rysunek 1. To samo powiadomienie wyświetlane na telefonie i zegarku.

Aby uzyskać najlepsze wyniki, użyj jednej z tych podklas:NotificationCompat.Style

Uwaga: użycie RemoteViews powoduje usunięcie niestandardowych układów z powiadomień, a urządzenie do noszenia wyświetla tylko tekst i ikony.

Zalecane powiadomienia na urządzenia do noszenia

Używaj rozwijanych powiadomień jako punktu wyjścia dla wszystkich powiadomień, ponieważ są one świetnym sposobem na zaangażowanie użytkowników urządzeń do noszenia. Zminiaturizowany stan jest wyświetlany na pasku powiadomień, dzięki czemu można szybko sprawdzić powiadomienie. Jeśli użytkownik ją naciśnie, powiadomienie się rozwinie i wyświetli dodatkowe treści oraz działania, które można przewijać.

Możesz utworzyć rozwijane powiadomienie w taki sam sposób jak na urządzeniu mobilnym, używając dowolnej z NotificationCompat.Styleklas podrzędnych. Na przykład standardowe powiadomienie z użyciem NotificationCompat.MessagingStyle wygląda tak: rozwijane powiadomienie

Rysunek 2. Przykład powiadomienia MessagingStyle na Wear OS.

W rozwiniętym powiadomieniu u dołu zobaczysz kilka działań.

Przykłady NotificationCompat.BigPictureStyle, NotificationCompat.BigTextStyle, NotificationCompat.InboxStyleNotificationCompat.MessagingStyle znajdziesz w przykładowym powiadomieniu w GitHubie.

Wskazówka: jeśli powiadomienia zawierają działanie „Odpowiedz”, np. w przypadku aplikacji do przesyłania wiadomości, możesz ulepszyć ich działanie. Możesz na przykład włączyć wpisywanie głosowe odpowiedzi bezpośrednio z poziomu urządzenia lub zdefiniować gotowe odpowiedzi tekstowe za pomocą ikony setChoices(). Więcej informacji znajdziesz w artykule Dodawanie przycisku odpowiedzi.

Unikanie duplikowania powiadomień

Domyślnie powiadomienia są udostępniane z aplikacji towarzyszącej na telefonie na wszystkie sparowane zegarki. To świetna opcja, jeśli nie masz zainstalowanej aplikacji na urządzenie do noszenia.

Jeśli jednak utworzysz samodzielną aplikację na zegarek i aplikację towarzyszącą na telefon, będą one generować podwójne powiadomienia.

Wear OS udostępnia interfejsy Bridging API, które umożliwiają zatrzymanie powielonych powiadomień. Jest to szczególnie ważne w przypadku aplikacji na urządzeniach z Wear OS 5 lub nowszym, ponieważ niektóre powiadomienia, które można odrzucić na urządzeniu mobilnym, nie są odrzucane na urządzeniu z Wear OS. Więcej informacji znajdziesz w artykule Opcje łączenia powiadomień.

Dodawanie do powiadomienia funkcji przeznaczonych na urządzenia do noszenia

Jeśli chcesz dodać do powiadomienia funkcje specyficzne dla urządzeń do noszenia, takie jak ukrywanie ikony aplikacji w powiadomieniu na urządzeniu do noszenia lub umożliwianie użytkownikom dyktowania odpowiedzi tekstowej za pomocą głosu, możesz użyć klasy NotificationCompat.WearableExtender, aby określić opcje. Aby korzystać z tego interfejsu API, wykonaj te czynności:

  1. Utwórz instancję klasy WearableExtender, ustawiając opcje powiadomienia specyficzne dla urządzenia do noszenia.
  2. Utwórz instancję NotificationCompat.Builder, ustawiając odpowiednie właściwości powiadomienia zgodnie z opisem podanym wcześniej w tym przewodniku.
  3. Wywołaj funkcję extend() w powiadomieniu i przekaż do niej wartość WearableExtender. Spowoduje to zastosowanie opcji urządzenia do powiadomienia.
  4. Call build(), aby utworzyć powiadomienie.

Uwaga: jeśli używasz platformy NotificationManager, niektóre funkcje z NotificationCompat.WearableExtender nie działają, więc używaj NotificationCompat.

Możesz synchronizować zamykanie lub anulowanie powiadomień na urządzeniach użytkownika. Aby zsynchronizować zamknięcie, użyj metody setDismissalId(). W przypadku każdego powiadomienia przekaż globalnie unikalny identyfikator w postaci ciągu znaków, gdy wywołujesz funkcję setDismissalId(). Gdy powiadomienie zostanie odrzucone, wszystkie inne powiadomienia z tym samym identyfikatorem odrzucenia zostaną odrzucone na zegarku i telefonie towarzyszącym. Aby pobrać identyfikator odrzucenia, użyj getDismissalId().

Określanie działań tylko na urządzeniach do noszenia

Jeśli chcesz, aby na zegarku i telefonie były dostępne różne działania, użyj elementu WearableExtender.addAction(). Po dodaniu działania tą metodą urządzenie nie będzie wyświetlać żadnych innych działań dodanych za pomocą metody NotificationCompat.Builder.addAction(). Działania dodane za pomocą ikony WearableExtender.addAction() pojawiają się tylko na urządzeniu do noszenia, a nie na telefonie.

Uruchamianie aplikacji Telefon na urządzeniu do noszenia

Jeśli używasz powiadomień pomostowych, każde powiadomienie automatycznie zawiera przycisk uruchamiający aplikację na telefonie. Jeśli jednak używasz powiadomienia lokalnego utworzonego na zegarku, wykonaj te czynności, aby utworzyć przycisk, który uruchamia aplikację na telefonie:

  1. Utwórz nowy Activity, który rozszerza ConfirmationActivity.
  2. Użyj RemoteActivityHelper w nowym Activity, aby uruchomić aplikację Telefon.
  3. Podczas tworzenia Intent, aby uruchomić Activity z poziomu powiadomienia, ustaw wartość dodatkową EXTRA_ANIMATION_TYPE na OPEN_ON_PHONE_ANIMATION.
To podejście zachęca użytkownika do interakcji z telefonem i jest zgodne z wymaganiami platformy dotyczącymi uruchamiania procesów w tle.

Uwaga: nie możesz używać BroadcastReceiver jako celu działania powiadomienia.