Il est préférable que les applications Wear OS fonctionnent indépendamment d'un téléphone afin que les utilisateurs puissent effectuer des tâches sur une montre sans accéder à un téléphone Android ou iOS. Si une interaction avec le téléphone est nécessaire pour le fonctionnement de l'application de la montre, vous devez marquer votre application Wear OS comme non autonome et faire le nécessaire afin de vous assurer que l'utilisateur a accès à l'application pour téléphone.
Planifier votre application
Vous pouvez utiliser le format Android App Bundle pour générer automatiquement des APK (Android Package Kit) optimisés pour la configuration de l'appareil de chaque utilisateur dans la même fiche d'application. Cela permet aux utilisateurs de ne télécharger que le code et les ressources dont ils ont besoin pour exécuter votre application.
Pour en savoir plus sur la configuration de votre application en vue de sa distribution via le Google Play Store, consultez Compresser et distribuer des applications Wear et lisez le guide de démarrage pour les fichiers Android App Bundle.
Pour les nouvelles applications, le niveau d'API cible doit être supérieur ou égal à 34. Pour en savoir plus, consultez Respecter le niveau d'API cible requis par Google Play. Cibler le niveau d'API disponible le plus récent permet de s'assurer que votre application fonctionne correctement sur les versions actuelles de la plate-forme.
Pour en savoir plus sur les requêtes réseau et l'accès au réseau à bande passante élevée, consultez Accès au réseau et synchronisation sur Wear OS.
Définir une application en tant qu'application Wear OS
Vous devez définir la balise
<uses-feature> dans le fichier manifeste Android de votre application.
Pour indiquer qu'il s'agit d'une application de la montre, ajoutez un élément comme illustré dans l'exemple suivant :
<uses-feature android:name="android.hardware.type.watch" />
Identifier une application comme autonome ou non autonome
Une application de la montre est considérée comme autonome ou non autonome :
- Autonome : une application entièrement indépendante qui n'a pas besoin d'application pour téléphone afin d'exécuter les fonctionnalités de base. Bien que les invites "Ouvrir sur le téléphone" soient acceptables, l'application doit fournir aux utilisateurs d'autres moyens d'exécuter une fonction d'application (par exemple, un lien raccourci ou un QR code) sans dépendre d'un téléphone connecté.
- Non autonome : une application dépendante qui a besoin d'une application pour téléphone ou un autre appareil afin d'exécuter les fonctionnalités de base. Cette option est idéale pour les applications qui ne peuvent pas facilement fournir un autre moyen (comme un QR code ou un lien raccourci) pour exécuter une fonction d'application de base, telle que l'authentification.
Remarque : Même pour les applications non autonomes, les utilisateurs peuvent installer l'application Wear OS avant l'application mobile. Par conséquent, si votre application Wear OS détecte qu'un appareil portable à proximité ne dispose pas de l'application associée nécessaire, invitez l'utilisateur à l'installer.
Google valide l'exactitude de l'état autonome d'une application lors de la diffusion de l'application. Cette valeur affecte la visibilité des applications dans le Play Store sur les appareils non connectés, tels que les appareils Wear OS qui ne sont pas associés à des appareils portables. Les applications non autonomes, ainsi que les applications que les développeurs désignent incorrectement comme "autonomes", ne sont pas disponibles pour les utilisateurs sur ces appareils non connectés.
Dans votre application Wear OS, définissez la valeur de l'élément
meta-data com.google.android.wearable.standalone
dans le fichier manifeste Android afin d'indiquer si votre application est autonome ou non autonome.
Si l'application de la montre que vous avez développée est autonome, précisez-le dans le Google Play Store en définissant la valeur de com.google.android.wearable.standalone sur true :
<meta-data android:name="com.google.android.wearable.standalone" android:value="true" />
Si l'application de la montre n'est pas autonome et si ses fonctionnalités principales dépendent d'une autre application, définissez com.google.android.wearable.standalone sur false. Cela signifie que l'application de la montre nécessite un autre appareil, mais cela n'aura pas d'incidence sur la promotion de cette application sur le Google Play Store.
Remarque : Même si la valeur de com.google.android.wearable.standalone est false, l'application de la montre peut être installée avant l'installation de l'application pour téléphone.
Par conséquent, si l'application de la montre détecte qu'un téléphone associé ne dispose pas de l'application pour téléphone requise, comme décrit sur cette page, invitez l'utilisateur à installer l'application pour téléphone.
Code partagé et stockage de données
Le code peut être partagé entre une application Wear OS et une application pour téléphone. Par exemple, un code commun de mise en réseau peut se trouver dans une bibliothèque partagée.
Le code spécifique à un facteur de forme peut éventuellement se trouver dans un module distinct.
Vous pouvez utiliser les API de stockage Android standards pour stocker des données localement, comme vous le feriez sur un téléphone. Vous pouvez utiliser le DataStore pour stocker des paires clé-valeur et des objets typés, ou vous pouvez utiliser la bibliothèque de persistanceRoom.
Détecter votre application sur un autre appareil
L'application de la montre et l'application pour téléphone correspondante peuvent toutes les deux détecter si l'autre application est disponible.
L'application pour téléphone et l'application de la montre peuvent utiliser CapabilityClient pour annoncer la présence de l'application sur un appareil associé. Cette opération peut s'effectuer de manière statique ou dynamique.
Lorsqu'une application se trouve dans un nœud du réseau Wear OS d'un utilisateur (par exemple, sur un téléphone, une montre associée ou dans le cloud), la classe CapabilityClient permet à une autre application de la détecter. Pour en savoir plus, consultez Annoncer des fonctionnalités.
Si l'une de vos applications ne peut pas détecter l'autre, vous pouvez inviter l'utilisateur à ouvrir la fiche Play Store sur l'appareil concerné. Cette solution est destinée aux applications de la montre qui nécessitent la présence d'une application pour téléphone associé afin de fonctionner correctement.
Vous devez vérifier si le Play Store est disponible sur l'appareil, car certains téléphones (comme les iPhone) ne sont pas compatibles avec le Play Store.
Les sections suivantes décrivent les bonnes pratiques pour deux scénarios :
- L'application autonome de la montre a besoin de l'application pour téléphone.
- L'application pour téléphone a besoin de l'application autonome de la montre.
Vous pouvez également consulter l'exemple
Datalayer helpers, qui montre comment utiliser les bibliothèques
Datalayer helpers, qui font partie de
Horologist. Ces assistants vous permettent de surveiller la connexion entre un appareil portable
et un appareil Wear OS.
Pour en savoir plus
sur les classes présentées dans la section suivante, consultez la
documentation de référence de l'API Wear OS.
Cette documentation de référence contient des informations sur la
PhoneTypeHelper classe, qui comporte une
getPhoneDeviceType() méthode permettant à votre
application Wear OS de vérifier si un téléphone associé est un appareil Android ou un appareil iOS.
Spécifier des noms de fonctionnalités permettant de détecter vos applications
Pour l'application correspondant à chaque type d'appareil (montre ou téléphone), spécifiez une chaîne unique pour le nom de la fonctionnalité dans le fichier res/values/wear.xml.
Par exemple, dans votre module mobile, le fichier wear.xml peut inclure les éléments suivants :
<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>
Dans votre module Wear OS, le fichier wear.xml comprend une valeur différente du nom de la fonctionnalité, par exemple :
<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>
Pour en savoir plus, consultez Annoncer des fonctionnalités.
Détecter des applications et ouvrir une URL depuis une montre
L'application de la montre peut détecter si l'application pour téléphone est disponible sur le téléphone associé d'un utilisateur. Pour cela, procédez comme suit :
-
Utilisez le
CapabilityClientafin de vérifier si l'application pour téléphone est installée sur le téléphone associé. Pour en savoir plus, consultez l'exemple Datalayer helpers sur GitHub. -
Si l'application pour téléphone n'est pas installée sur le téléphone, utilisez la
PhoneDeviceType.getPhoneDeviceType()méthode pour vérifier le type de téléphone. Pour en savoir plus, consultez la section suivante. -
Si
PhoneDeviceType.DEVICE_TYPE_ANDROIDest renvoyé, il s'agit d'un téléphone Android. AppelezRemoteActivityHelper.startRemoteActivity()sur l'appareil Wear OS pour ouvrir le Play Store sur le téléphone. Utilisez l'URI du marché de l'application pour téléphone, qui peut être différent de l'URI de votre application Wear. Par exemple, servez-vous d'un URI de marché tel quemarket://details?id=com.example.android.wearable.wear.finddevices. -
Si
PhoneDeviceType.DEVICE_TYPE_IOSest renvoyé, le téléphone est un téléphone iOS n'ayant pas accès au Play Store. Ouvrez l'App Store sur l'iPhone en appelantRemoteActivityHelper.startRemoteActivity()sur l'appareil Wear OS. Vous pouvez spécifier l'URL iTunes de votre application, par exemplehttps://itunes.apple.com/us/app/yourappname.Wear OS ne vous permet pas de déterminer de manière programmatique si l'application pour téléphone est installée sur un appareil iOS. Il est recommandé de donner à l'utilisateur un moyen de déclencher manuellement l'ouverture de l'App Store.
Remarque : Utilisez l'API RemoteActivityHelper comme décrit dans la section précédente pour
spécifier que toute URL doit être ouverte sur le téléphone depuis la montre
et qu'aucune application pour téléphone n'est requise.
Détails permettant de détecter le type de téléphone associé
Voici un extrait qui utilise la méthode getPhoneDeviceType() pour
vérifier le type de téléphone auquel la montre est associée :
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
La valeur renvoyée par la getPhoneDeviceType()
méthode est l'une des suivantes :
| Valeur renvoyée | Description |
|---|---|
DEVICE_TYPE_ANDROID
|
Le téléphone associé est un appareil Android. |
DEVICE_TYPE_IOS
|
Le téléphone associé est un appareil iOS. |
DEVICE_TYPE_UNKNOWN
|
Le téléphone associé est un appareil inconnu. |
DEVICE_TYPE_ERROR
|
Une erreur s'est produite lors de l'identification du type de téléphone associé. Une autre vérification doit être effectuée ultérieurement. |
Détection des applications à partir d'un téléphone Android
Votre téléphone Android peut détecter si les appareils Wear OS d'un utilisateur disposent de votre application de montre. Pour cela, procédez comme suit :
-
Utilisez le
NodeClientpour rechercher toutes les montres connectées au téléphone de l'utilisateur. Pour en savoir plus, consultez l'exemple Datalayer helpers sur GitHub. -
Utilisez le
CapabilityClient, pour identifier les montres de l'utilisateur sur lesquelles votre application est installée. -
Si votre application n'est pas installée sur toutes ses montres, autorisez l'utilisateur à ouvrir le Play Store sur les appareils Wear OS restants depuis le téléphone à l'aide de la méthode
RemoteActivityHelper.startRemoteActivity(). Utilisez l'URI du marché pour l'application Wear OS, qui peut être différent de l'URI de l'application pour téléphone. Par exemple, servez-vous d'un URI de marché tel quemarket://details?id=com.example.android.wearable.wear.finddevices.
Données de localisation pour les montres associées à des iPhone
Pour les montres associées à des iPhone, utilisez le Fused Location Provider (FLP) pour obtenir les données de localisation d'une montre. Pour en savoir plus, consultez Détecter la position sur Wear OS.
Si le téléphone associé est disponible, FLP l'utilise pour obtenir les données de localisation.
Obtenir uniquement les données nécessaires
En règle générale, lorsque vous obtenez des données depuis Internet, limitez-vous aux données nécessaires. Sinon, vous risquez de provoquer une latence et une utilisation de la mémoire et de la batterie inutiles.
Lorsqu'une montre est connectée via une connexion Bluetooth LE, votre application peut avoir accès à une bande passante de seulement 4 kilo-octets par seconde, selon la montre. Par conséquent, nous vous recommandons de suivre les instructions suivantes :
- Effectuez un audit sur les requêtes et les réponses réseau afin de trouver des données supplémentaires destinées uniquement à une application pour téléphone.
- Réduisez les images volumineuses avant de les envoyer à une montre via un réseau.
Pour les cas où un réseau à bande passante élevée est nécessaire, consultez Accès réseau à haut débit.
Autres exemples de code
L'exemple Datalayer helpers illustre davantage l'utilisation des API abordées sur cette page.