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.
Verwenden Sie in beiden Fällen die Klasse NotificationCompat.Builder, 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 wird auf einem Smartphone und einer Smartwatch angezeigt.
Verwenden Sie für optimale Ergebnisse eine der NotificationCompat.Style-Unterklassen.
Hinweis:Wenn Sie RemoteViews verwenden, werden Benachrichtigungen von benutzerdefinierten Layouts befreit und auf dem Wearable werden nur der Text und die Symbole angezeigt.
Benachrichtigungen zu empfohlenen Videos auf Wearables
Verwende erweiterbare Benachrichtigungen als Ausgangspunkt für alle Benachrichtigungen, da sie eine gute Möglichkeit sind, Nutzer von Wearables anzusprechen. Der minimierte Status wird in der Benachrichtigungsleiste angezeigt, sodass Nutzer ihn schnell erfassen können. Wenn der Nutzer darauf tippt, wird die Benachrichtigung maximiert und es werden zusätzliche Inhalte und Aktionen angezeigt, die sich scrollen lassen.
Sie können eine maximierbare Benachrichtigung erstellen, indem Sie wie auf Mobilgeräten 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.
In der maximierten Ansicht sind unten mehrere Aktionen zu sehen.
Tipp:Wenn Ihre Benachrichtigungen eine Aktion zum Antworten enthalten, z. B. bei einer Messaging-App, können Sie das Verhalten der Benachrichtigung optimieren. So können Sie beispielsweise Antworten per Spracheingabe direkt auf dem Wearable oder vordefinierte Textantworten mit setChoices() aktivieren.
Weitere Informationen finden Sie unter Schaltfläche „Antworten“ hinzufügen.
Doppelte Benachrichtigungen vermeiden
Standardmäßig werden Benachrichtigungen von einer Companion-App auf dem Smartphone 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 zugehörige Smartphone-App entwickeln, werden durch die Apps doppelte Benachrichtigungen erstellt.
Wear OS bietet mit den Bridging APIs eine Möglichkeit, doppelte Benachrichtigungen zu 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 Überbrückungsoptionen für Benachrichtigungen.
Einer Benachrichtigung Wearable-spezifische Funktionen hinzufügen
Wenn du einer Benachrichtigung Funktionen hinzufügen möchtest, die auf bestimmte Wearables abgestimmt sind, kannst du die Klasse
NotificationCompat.WearableExtender verwenden, um die Optionen anzugeben.
So verwenden Sie diese API:
Hinweis:Wenn Sie das 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 und die
Dismissal-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 Ablehnungs-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()
Telefon App über ein Wearable starten
Wenn Sie überbrückte Benachrichtigungen verwenden, enthält jede Benachrichtigung automatisch eine Schaltfläche zum Starten der App auf dem Smartphone. 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 Telefon App zu starten. - Wenn Sie die
Intenterstellen, um dieActivityüber die Benachrichtigung zu starten, legen Sie das ExtraEXTRA_ANIMATION_TYPEaufOPEN_ON_PHONE_ANIMATIONfest.
Hinweis:Sie können kein BroadcastReceiver als Ziel der Benachrichtigungsaktion verwenden.