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:
- Aplikacja mobilna tworzy powiadomienie, a system automatycznie przekazuje je na zegarek.
- Aplikacja na urządzenie do noszenia tworzy powiadomienie.
W obu przypadkach do tworzenia powiadomień użyj klasy
NotificationCompat.Builder
do tworzenia powiadomień. Gdy tworzysz powiadomienia za pomocą klasy konstruktora, system
dba o ich prawidłowe wyświetlanie. Na przykład, gdy wysyłasz powiadomienie z
aplikacji mobilnej, każde powiadomienie pojawia się jako karta w strumieniu powiadomień.
Aby zobaczyć, jak wyświetlają się powiadomienia, zapoznaj się z tym przykładem.
Rysunek 1. To samo powiadomienie wyświetlane na telefonie i zegarku.
Aby uzyskać najlepsze wyniki, użyj jednej z
NotificationCompat.Style
podklas.
Uwaga:
Użycie RemoteViews
usuwa z powiadomień niestandardowe układy, a urządzenie do noszenia wyświetla tylko tekst i ikony.
Uwaga:
Powiadomienia z intencją pełnoekranową (setFullScreenIntent())
i uprawnienie USE_FULL_SCREEN_INTENT
nie są obsługiwane w Wear OS.
Zalecane powiadomienia na urządzenia do noszenia
Jako punkt wyjścia dla wszystkich powiadomień używaj powiadomień rozwijanych, ponieważ są one świetnym sposobem na zaangażowanie użytkowników urządzeń do noszenia. W stanie zwiniętym powiadomienie wyświetla się w panelu powiadomień przez krótki czas, co pozwala na szybkie sprawdzenie. Gdy użytkownik kliknie powiadomienie, rozwinie się ono, wyświetlając dodatkowe treści i działania w trybie pełnoekranowym.
Powiadomienie rozwijane możesz utworzyć
tak samo jak na urządzeniu mobilnym, używając dowolnej NotificationCompat.Style
podklasy. Na przykład standardowe powiadomienie korzystające z
NotificationCompat.MessagingStyle
wygląda tak:
Rysunek 2. Przykład powiadomienia MessagingStyle w Wear OS.
Widać, że powiadomienie ma kilka działań ułożonych w stos na dole rozwiniętego stanu.
Wskazówka: jeśli powiadomienia zawierają działanie „Odpowiedz”, np. w aplikacji do obsługi wiadomości, możesz ulepszyć ich działanie. Możesz na przykład włączyć głosowe wprowadzanie tekstu
bezpośrednio z urządzenia do noszenia lub wstępnie zdefiniowane odpowiedzi tekstowe za pomocą
setChoices().
Więcej informacji znajdziesz w artykule
Dodawanie przycisku odpowiedzi.
Unikanie duplikatów powiadomień
Domyślnie powiadomienia są udostępniane z powiązany telefon 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 powiązany telefon, aplikacje będą tworzyć duplikaty powiadomień.
Wear OS umożliwia zatrzymanie duplikatów powiadomień za pomocą interfejsów API do udostępniania 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 przekazywania powiadomień.
Dodawanie do powiadomienia funkcji specyficznych dla urządzeń do noszenia
Jeśli chcesz dodać do powiadomienia funkcje specyficzne dla urządzeń do noszenia, możesz użyć klasy
NotificationCompat.WearableExtender, aby określić opcje.
Aby użyć tego interfejsu API:
Uwaga:
Jeśli używasz NotificationManager z frameworka,
niektóre funkcje z
NotificationCompat.WearableExtender nie działają, więc używaj
NotificationCompat.
Ten przykład pokazuje, jak ustawić działanie specyficzne dla Wear w powiadomieniu oraz jak ustawić identyfikator odrzucenia
. Gdy powiadomienie zostanie odrzucone, wszystkie inne powiadomienia z tym samym identyfikatorem odrzucenia zostaną odrzucone na zegarku i na powiązanym telefonie. Aby pobrać identyfikator odrzucenia,
użyj
getDismissalId().
// This intent will be fired as a result of the user clicking the "Open on watch" action. // However, it executes on the phone, not on the watch. Typically, the Activity should then use // RemoteActivityHelper to then launch the correct activity on the watch. val intent = Intent(context, LaunchOnWearActivity::class.java) val wearPendingIntent = PendingIntent.getActivity( context, wearRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) val openOnWatchAction = NotificationCompat.Action.Builder( R.drawable.watch, "Open on watch", wearPendingIntent ) .build() val wearableExtender = NotificationCompat.WearableExtender() // This action will only be shown on the watch, not on the phone. // Actions added to the Notification builder directly will not be shown on the watch, // because one or more actions are defined in the WearableExtender. .addAction(openOnWatchAction) // This synchronizes dismissals between watch and phone. .setDismissalId(chatId) val notification = NotificationCompat.Builder(context, channelId) // ... set other fields ... .extend(wearableExtender) .build()
Uruchamianie aplikacji na telefonie z urządzenia do noszenia
Jeśli używasz przekazywanych powiadomień, każde powiadomienie automatycznie zawiera przycisk uruchamiający aplikację na telefonie. Jeśli jednak używasz powiadomienia lokalnego utworzonego na zegarku, użyj tych czynności, aby utworzyć przycisk uruchamiający aplikację na telefonie:
- Utwórz nowy
Activity, który rozszerzaConfirmationActivity. - Użyj
RemoteActivityHelperw nowejActivity, aby uruchomić aplikację na telefonie. - Podczas tworzenia
Intentdo uruchomieniaActivityz powiadomienia ustaw dodatkowy elementEXTRA_ANIMATION_TYPEnaOPEN_ON_PHONE_ANIMATION.
Uwaga: nie możesz używać BroadcastReceiver jako celu
działania powiadomienia.