Benachrichtigungen unter Wear OS

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:

  1. Eine mobile App erstellt eine Benachrichtigung und das System leitet diese Benachrichtigung automatisch an die Smartwatch weiter.
  2. 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.

Benachrichtigungskarten

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:

expandable-notification

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:

  1. Erstellen Sie eine neue Activity, die ConfirmationActivity erweitert.
  2. Verwenden Sie RemoteActivityHelper in der neuen Activity, um die Telefon App zu starten.
  3. Wenn Sie die Intent erstellen, um die Activity über die Benachrichtigung zu starten, legen Sie das Extra EXTRA_ANIMATION_TYPE auf OPEN_ON_PHONE_ANIMATION fest.
Bei diesem Ansatz wird der Nutzer aufgefordert, auf seinem Smartphone zu interagieren. Außerdem werden die Plattformanforderungen für das Starten von Hintergrundprozessen eingehalten.

Hinweis:Sie können kein BroadcastReceiver als Ziel der Benachrichtigungsaktion verwenden.