Eigenständige und nicht eigenständige Wear OS-Apps im Vergleich

Wir empfehlen, dass Wear OS-Apps unabhängig von einem Smartphone funktionieren, damit Nutzer Aufgaben auf einer Smartwatch erledigen können, ohne dass sie ein Android- oder iOS-Smartphone haben. Wenn für Ihre Smartwatch-App eine Smartphone-Interaktion erforderlich ist, müssen Sie die Wear OS-App als nicht eigenständige App kennzeichnen und dafür sorgen, dass der Nutzer die Telefon-App verfügbar hat.

App planen

Mit Android App Bundle können Sie automatisch optimierte Android Package Kits (APKs) für die Gerätekonfiguration jedes Nutzers in demselben App-Eintrag generieren. Auf diese Weise können Nutzer nur den Code und die Ressourcen herunterladen, die sie zum Ausführen Ihrer Anwendung benötigen.

Informationen dazu, wie du deine App für den Vertrieb über den Google Play Store einrichtest, findest du unter Wear OS-Apps verpacken und vertreiben sowie in der Anleitung zu den ersten Schritten mit Android App Bundles.

Generell ist das Mindest-API-Level für eine Wear OS-App das API-Level 25 (Wear OS 2.0). Das Ziel-API-Level muss mindestens API-Level 28 sein. Weitere Informationen findest du unter Anforderungen an das Ziel-API-Level von Google Play erfüllen. Setze targetSdkVersion auf API-Level 30 (Wear OS 3), damit deine App mit der neuesten Plattformversion einwandfrei funktioniert.

Informationen zu Netzwerkanfragen und zum Netzwerkzugriff mit hoher Bandbreite findest du unter Netzwerkzugriff und -synchronisierung unter Wear OS.

App als Wear OS-App definieren

Du musst das <uses-feature>-Tag in der Android-Manifestdatei deiner App definieren. Um anzugeben, dass es sich um eine Smartwatch-App handelt, fügen Sie einen Eintrag wie den folgenden hinzu:

  <manifest>
  ...
  <uses-feature android:name="android.hardware.type.watch" />
  ...
  </manifest>
  

Eine App als eigenständige oder nicht eigenständige App identifizieren

Eine Smartwatch-App wird entweder als eigenständige App betrachtet oder nicht als eigenständige App:

  • Eigenständig: Eine vollständig unabhängige Anwendung, bei der für Hauptfunktionen, einschließlich der Authentifizierung, keine Telefon-App erforderlich ist. Eine Telefon-App bietet nur optionale Funktionen (falls verfügbar).
  • Nicht eigenständige App: Eine abhängige App, für die für Hauptfunktionen, einschließlich Authentifizierung, eine App auf einem Smartphone oder ein anderes Gerät erforderlich ist.

Lege in deiner Wear OS-App den Wert des Elements meta-data com.google.android.wearable.standalone in der Android-Manifestdatei fest, um anzugeben, ob deine App eigenständig oder nicht eigenständig ist.

Wenn deine Smartwatch-App eine vollkommen unabhängige, eigenständige App ist, gib dies im Google Play Store an, indem du den Wert von com.google.android.wearable.standalone auf true setzt:

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

Wenn deine Smartwatch-App keine eigenständige App ist und für die Hauptfunktionen eine andere App benötigt, setze den Wert von com.google.android.wearable.standalone auf false. Dies bedeutet, dass für die Smartwatch-App ein anderes Gerät erforderlich ist, dies hat aber keinen Einfluss auf deine App-Werbung im Google Play Store.

Hinweis: Auch wenn der Wert von com.google.android.wearable.standalone false ist, kann die Smartwatch-App bereits vor der Installation der Smartphone-App installiert werden. Wenn deine Smartwatch-App erkennt, dass die erforderliche Telefon-App auf einem gekoppelten Smartphone nicht vorhanden ist, wie auf dieser Seite beschrieben, fordert den Nutzer daher auf, die Telefon-App zu installieren.

Gemeinsamer Code und Datenspeicher

Code kann zwischen einer Wear OS-App und einer Smartphone-App geteilt werden. Üblicher Netzwerkcode kann sich z. B. in einer gemeinsam genutzten Bibliothek befinden.

Optional kann sich Code, der für einen Formfaktor spezifisch ist, in einem separaten Modul befinden.

Sie können Standard-APIs für den Android-Speicher verwenden, um Daten lokal zu speichern, wie Sie dies auf einem Smartphone tun würden. Sie können beispielsweise die SharedPreferences APIs oder die Persistenzbibliothek Room verwenden.

App auf einem anderen Gerät erkennen

Die Smartwatch-App und die entsprechende Smartphone-App können jeweils erkennen, ob die andere App verfügbar ist.

Deine Smartphone- und Smartwatch-Apps können CapabilityClient nutzen, um auf einem gekoppelten Gerät Werbung für ihre Präsenz zu machen. Dies ist statisch oder dynamisch.

Wenn sich eine App auf einem Knoten im Wear OS-Netzwerk eines Nutzers befindet, z. B. auf einem Smartphone, einer gekoppelten Smartwatch oder in der Cloud, kann sie von anderen Apps erkannt werden.CapabilityClient Weitere Informationen findest du unter Werbefunktionen.

Wenn eine deiner Apps die andere nicht erkennt, kannst du den Nutzer auffordern, den Play Store-Eintrag auf dem betroffenen Gerät zu öffnen. Das ist eine Lösung für Smartwatch-Apps, bei denen die Anwesenheit der zugehörigen Smartphone-App erforderlich ist, um richtig zu funktionieren.

Du musst prüfen, ob der Play Store auf dem Gerät verfügbar ist, da er nicht von allen Smartphones, z. B. iPhones, unterstützt wird.

In den folgenden Abschnitten werden Best Practices für zwei Szenarien beschrieben:

  • Die eigenständige Smartwatch-App benötigt die Smartphone-App.
  • Die Smartphone-App benötigt die eigenständige Smartwatch-App.

Sie können sich auch die Beispiel-App auf GitHub ansehen, in der diese Funktionalität demonstriert wird. Weitere Informationen zu den im folgenden Abschnitt beschriebenen Klassen findest du in der Referenz zur Wear OS API. Diese Referenz enthält auch Informationen zur Klasse PhoneTypeHelper, die eine getPhoneDeviceType()-Methode enthält, mit der deine Wear OS-App prüfen kann, ob ein gekoppeltes Smartphone ein Android- oder iOS-Gerät ist.

Geben Sie Funktionsnamen zur Erkennung Ihrer Anwendungen an

Gib für die App für den jeweiligen Gerätetyp (Smartwatch oder Smartphone) in der Datei res/values/wear.xml einen eindeutigen String für den Funktionsnamen an.

Die Datei wear.xml in Ihrem mobilen Modul könnte beispielsweise Folgendes enthalten:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

Die Datei wear.xml in deinem Wear OS-Modul enthält einen anderen Wert für den Funktionsnamen, z. B. den folgenden:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

Weitere Informationen findest du unter Werbefunktionen.

App-Erkennung und Öffnen einer URL auf einer Smartwatch

Die Smartwatch-App kann erkennen, ob auf dem gekoppelten Smartphone eines Nutzers deine Smartphone-App installiert ist. Gehen Sie so vor:

  1. Prüfe mit CapabilityClient, ob deine Smartphone-App auf dem gekoppelten Smartphone installiert ist. Weitere Informationen findest du in der Beispielanwendung auf GitHub.
  2. Wenn die Telefon-App nicht auf dem Smartphone installiert ist, verwenden Sie die Methode PhoneDeviceType.getPhoneDeviceType(), um den Telefontyp zu prüfen. Weitere Informationen dazu finden Sie im folgenden Abschnitt.
  3. Wird PhoneDeviceType.DEVICE_TYPE_ANDROID zurückgegeben, handelt es sich um ein Android-Smartphone. Rufe auf dem Wear OS-Gerät RemoteActivityHelper.startRemoteActivity() auf, um den Play Store auf dem Smartphone zu öffnen. Verwende den Markt-URI für deine Smartphone-App. Dieser kann sich vom URI deiner Wear-App unterscheiden. Verwenden Sie beispielsweise einen Markt-URI wie market://details?id=com.example.android.wearable.wear.finddevices.
  4. Wenn PhoneDeviceType.DEVICE_TYPE_IOS zurückgegeben wird, handelt es sich um ein iOS-Smartphone, für das kein Play Store verfügbar ist. Öffne den App Store auf dem iPhone, indem du RemoteActivityHelper.startRemoteActivity() auf dem Wear OS-Gerät aufrufst. Du kannst die iTunes-URL deiner App angeben, z. B. https://itunes.apple.com/us/app/yourappname.

    Unter Wear OS kannst du nicht programmatisch ermitteln, ob deine Smartphone-App auf einem iOS-Gerät installiert ist. Stelle als Best Practice einen Mechanismus für den Nutzer bereit, um das Öffnen des App-Shops manuell auszulösen.

Hinweis: Verwende die zuvor beschriebene RemoteActivityHelper API, um anzugeben, dass eine beliebige URL auf dem Smartphone von der Smartwatch aus geöffnet werden soll und dass keine Telefon-App erforderlich ist.

Details zur Ermittlung des Typs des gekoppelten Smartphones

Hier ist ein Snippet, das mit der Methode getPhoneDeviceType() den Smartphone-Typ prüft, mit dem die Smartwatch gekoppelt ist:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

Von der Methode getPhoneDeviceType() wird einer der folgenden Werte zurückgegeben:

Rückgabewert Beschreibung
DEVICE_TYPE_ANDROID Das zugehörige Smartphone ist ein Android-Gerät.
DEVICE_TYPE_IOS Das zugehörige Smartphone ist ein iOS-Gerät.
DEVICE_TYPE_UNKNOWN Das gekoppelte Smartphone ist ein unbekanntes Gerät.
DEVICE_TYPE_ERROR Beim Ermitteln des Typs des gekoppelten Smartphones ist ein Fehler aufgetreten. Später sollte eine weitere Prüfung durchgeführt werden.

App-Erkennung ab einem Android-Smartphone

Dein Android-Smartphone kann erkennen, ob deine Smartwatch-App auf den Wear OS-Geräten eines Nutzers installiert ist. Gehe dazu so vor:

  1. Suche mithilfe von NodeClient alle Smartwatches, die mit dem Smartphone des Nutzers verbunden sind. Weitere Informationen findest du in der Beispielanwendung auf GitHub.
  2. Prüfe mithilfe von CapabilityClient, auf welcher der Smartwatches des Nutzers deine App installiert ist.
  3. Wenn deine App nicht auf allen Smartwatches des Nutzers installiert ist, musst du dem Nutzer erlauben, den Play Store auf den verbleibenden Wear OS-Geräten über das Smartphone mit der RemoteActivityHelper.startRemoteActivity()-Methode zu öffnen. Verwende den Markt-URI für die Wear OS-App. Dieser kann sich vom URI deiner Smartphone-App unterscheiden. Verwenden Sie beispielsweise einen Markt-URI wie market://details?id=com.example.android.wearable.wear.finddevices.

Standortdaten für Smartwatches, die mit iPhones gekoppelt sind

Verwende bei Smartwatches, die mit iPhones gekoppelt sind, den Fused Location Provider (FLP), um Standortdaten auf der Smartwatch abzurufen. Weitere Informationen findest du unter Standort unter Wear OS erkennen.

Wenn das zugehörige Smartphone verfügbar ist, verwendet FLP das zugehörige Smartphone für die Standortdaten.

Nur notwendige Daten erfassen

Wenn Sie Daten aus dem Internet beziehen, sollten Sie im Allgemeinen nur die notwendigen Daten abrufen. Andernfalls können dies zu unnötiger Latenz, Arbeitsspeichernutzung und Akkunutzung führen.

Wenn eine Smartwatch über eine Bluetooth LE-Verbindung verbunden ist, hat deine App je nach Smartwatch möglicherweise nur Zugriff auf eine Bandbreite von nur 4 Kilobyte pro Sekunde. Daher werden die folgenden Schritte empfohlen:

  • Prüfen Sie Ihre Netzwerkanfragen und -antworten auf zusätzliche Daten, die nur für eine Telefonanwendung benötigt werden.
  • Verkleinern Sie große Bilder, bevor Sie sie über ein Netzwerk an eine Uhr senden.

Informationen zu Fällen, in denen ein Netzwerk mit hoher Bandbreite benötigt wird, finden Sie unter Netzwerkzugriff mit hoher Bandbreite.

Zusätzliche Codebeispiele

Im Beispiel WearVerifyRemoteApp wird die Verwendung der auf dieser Seite behandelten APIs weiter veranschaulicht.