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.
Bei neuen Apps muss das Ziel-API-Level mindestens 30 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 App, bei der für die Hauptfunktionen keine Telefon-App erforderlich ist. Aufforderungen vom Typ „Auf Smartphone öffnen“ sind zwar akzeptabel, aber die App muss den Nutzern alternative Möglichkeiten bieten, eine App-Funktion wie einen Kurzlink oder QR-Code auszuführen, ohne auf ein per Tethering verbundenes Smartphone angewiesen zu sein.
- Nicht eigenständige App: Eine abhängige App, die für die Hauptfunktionen eine App auf einem Smartphone oder einem anderen Gerät erfordert. Diese Option eignet sich am besten für Apps, in denen es nicht ohne Weiteres möglich ist, eine alternative Methode wie einen QR-Code oder einen Kurzlink zum Ausführen einer zentralen App-Funktion wie der Authentifizierung bereitzustellen.
Hinweis:Auch bei nicht eigenständige Apps können Nutzer die Wear OS-App vor der mobilen App installieren. Wenn deine Wear OS-App also erkennt, dass auf einem Handheld-Gerät in der Nähe die erforderliche Companion-App fehlt, kannst du den Nutzer auffordern, die Companion-App zu installieren.
Google überprüft die Genauigkeit des eigenständigen Status einer App bei der Bereitstellung. Dieser Wert wirkt sich auf die Sichtbarkeit von Apps im Play Store auf Geräten ohne Tethering aus, z. B. Wear OS-Geräte, die nicht mit Handheld-Geräten gekoppelt sind. Nicht eigenständige Apps – ebenso wie Apps, die Entwickler fälschlicherweise als „eigenständige“ kennzeichnen – sind für Nutzer auf diesen Geräten ohne Tethering nicht verfügbar.
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 das
Datalayer-Hilfsbeispiel ansehen. Es zeigt die Verwendung der
Datalayer-Hilfsbibliotheken, die Teil des
Horologist sind. Mit diesen Hilfsfunktionen können Sie die Verbindung zwischen einem Handheld-Gerät und einem Wear OS-Gerät im Blick behalten.
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:
-
Prüfe mit
CapabilityClient
, ob deine Smartphone-App auf dem gekoppelten Smartphone installiert ist. Weitere Informationen finden Sie im Datalayer-Hilfsbeispiel auf GitHub. -
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. -
Wird
PhoneDeviceType.DEVICE_TYPE_ANDROID
zurückgegeben, handelt es sich um ein Android-Smartphone. Rufe auf dem Wear OS-GerätRemoteActivityHelper.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 wiemarket://details?id=com.example.android.wearable.wear.finddevices
. -
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 duRemoteActivityHelper.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 | Description |
---|---|
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:
-
Suche mithilfe von
NodeClient
alle Smartwatches, die mit dem Smartphone des Nutzers verbunden sind. Weitere Informationen finden Sie im Datalayer-Hilfsbeispiel auf GitHub. -
Prüfe mithilfe von
CapabilityClient
, auf welcher der Smartwatches des Nutzers deine App installiert ist. -
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 wiemarket://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 Datalayer-Hilfsbeispiel wird die Verwendung der auf dieser Seite behandelten APIs weiter veranschaulicht.