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.

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.

Benachrichtigungskarten

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:

expandable-notification

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:

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

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