Benachrichtigungen auf Smartwatches verwenden dieselben APIs und haben dieselbe Struktur wie Benachrichtigungen auf Smartphones.
Benachrichtigungen können auf einer Smartwatch auf zwei Arten angezeigt werden:
- Eine mobile App erstellt eine Benachrichtigung und das System leitet diese Benachrichtigung automatisch an die Smartwatch weiter.
- Eine Wearable-App erstellt eine Benachrichtigung.
In beiden Fällen verwenden Sie die
NotificationCompat.Builder
Klasse, um Benachrichtigungen zu erstellen. Wenn Sie Benachrichtigungen mit der Builder-Klasse erstellen, sorgt das System
dafür, dass sie richtig angezeigt werden. Wenn Sie beispielsweise eine Benachrichtigung über
Ihre mobile App senden, wird jede Benachrichtigung als Karte im Benachrichtigungsstream angezeigt.
Im folgenden Beispiel sehen Sie, wie Benachrichtigungen angezeigt werden.
Abbildung 1 : Dieselbe Benachrichtigung auf einem Smartphone und einer Smartwatch.
Verwenden Sie eine der
NotificationCompat.Style
Unterklassen, um die besten Ergebnisse zu erzielen.
Hinweis:
Wenn Sie RemoteViews
verwenden, werden benutzerdefinierte Layouts aus Benachrichtigungen entfernt und auf dem Wearable werden nur der Text und die Symbole angezeigt.
Hinweis:
Vollbild-Intent-Benachrichtigungen (setFullScreenIntent())
und die USE_FULL_SCREEN_INTENT
Berechtigung werden unter Wear OS nicht unterstützt.
Empfohlene Benachrichtigungen für Wearables
Verwenden Sie maximierbare Benachrichtigungen als Ausgangspunkt für alle Benachrichtigungen, da sie eine gute Möglichkeit sind, Wearable-Nutzer anzusprechen. Im minimierten Zustand werden sie kurz in der Benachrichtigung sleiste angezeigt. Wenn der Nutzer darauf tippt, wird die Benachrichtigung maximiert, und es werden zusätzliche Inhalte und Aktionen angezeigt.
Sie können maximierbare Benachrichtigungen
auf dieselbe Weise wie auf Mobilgeräten erstellen, indem Sie eine der NotificationCompat.Style
Unterklassen verwenden. Eine Standardbenachrichtigung mit
NotificationCompat.MessagingStyle
sieht beispielsweise so aus:
Abbildung 2 : Beispiel für eine MessagingStyle-Benachrichtigung unter Wear OS.
Sie sehen, dass die Benachrichtigung im maximierten Zustand mehrere Aktionen enthält, die unten gestapelt sind.
Tipp: Wenn Ihre Benachrichtigungen eine Antwortaktion enthalten, z. B. für eine Messaging
App, können Sie das Verhalten der Benachrichtigung verbessern. Sie können beispielsweise Antworten per Spracheingabe
direkt über das Wearable oder vordefinierte Textantworten mit
setChoices() aktivieren.
Weitere Informationen finden Sie unter
Antwortschaltfläche hinzufügen.
Doppelte Benachrichtigungen vermeiden
Standardmäßig werden Benachrichtigungen von einer Companion-Smartphone-App an alle gekoppelten Smartwatches weitergeleitet. Das ist eine gute Option, wenn Sie keine Wearable-App installiert haben.
Wenn Sie jedoch eine eigenständige Smartwatch-App und eine Companion-Smartphone-App erstellen, werden doppelte Benachrichtigungen erstellt.
Unter Wear OS können Sie doppelte Benachrichtigungen mit den Bridging APIs verhindern. Das ist besonders wichtig für Apps auf Geräten mit Wear OS 5 oder höher, da einige Benachrichtigungen, die auf einem Mobilgerät geschlossen werden können, auf dem Wear OS-Gerät nicht geschlossen werden können. Weitere Informationen finden Sie unter Bridging-Optionen für Benachrichtigungen.
Benachrichtigungen Wearable-spezifische Funktionen hinzufügen
Wenn Sie einer Benachrichtigung Wearable-spezifische Funktionen hinzufügen möchten, können Sie die
NotificationCompat.WearableExtender Klasse verwenden, um die Optionen anzugeben.
So verwenden Sie diese API:
Hinweis:
Wenn Sie den NotificationManager des Frameworks verwenden,
funktionieren einige Funktionen von
NotificationCompat.WearableExtender nicht. Verwenden Sie daher
NotificationCompat.
In diesem Beispiel wird gezeigt, wie Sie eine Wear-spezifische Aktion für die Benachrichtigung festlegen und auch die
Schließungs-ID festlegen. Wenn die Benachrichtigung geschlossen wird, werden alle anderen Benachrichtigungen mit derselben Schließungs-ID auf der Smartwatch und auf dem gekoppelten Smartphone geschlossen. Verwenden Sie
getDismissalId(), um eine Schließungs-ID abzurufen,
.
// 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()
Smartphone-App von einem Wearable aus starten
Wenn Sie weitergeleitete Benachrichtigungen verwenden, enthält jede Benachrichtigung automatisch eine Schaltfläche, mit der die App auf dem Smartphone gestartet werden kann. Wenn Sie jedoch eine lokale Benachrichtigung verwenden, die auf der Smartwatch erstellt wurde, gehen Sie so vor, um eine Schaltfläche zu erstellen, mit der die App auf dem Smartphone gestartet wird:
- Erstellen Sie eine neue
Activity, dieConfirmationActivityerweitert. - Verwenden Sie
RemoteActivityHelperin der neuenActivity, um die Smartphone-App zu starten. - Wenn Sie den
Intenterstellen, um dieActivityüber die Benachrichtigung zu starten, legen Sie das ExtraEXTRA_ANIMATION_TYPEaufOPEN_ON_PHONE_ANIMATIONfest.
Hinweis: Sie können BroadcastReceiver nicht als Ziel
der Benachrichtigungsaktion verwenden.