Détecter la version watchOS de l'utilisateur depuis l'application iOS

13

J'ai une application iOS où j'ai certains paramètres dans l'application iOS liés à la montre. Je souhaite les afficher uniquement si l'utilisateur dispose d'une Apple Watch compatible avec mon application.

Dans WatchConnectivity, je peux interroger la propriété isPaired de WCSession pour voir si l'utilisateur a une montre mais je ne peux pas comprendre comment déterminer la version watchOS (elle doit être> 5.0 pour utiliser mon application).

Existe-t-il un moyen de déterminer la version watchOS à partir de l'application iOS?

Stephen
la source
Je ne pense pas que vous puissiez vérifier la version watchOS d'iOS. Cependant, vous pouvez communiquer entre l'application Watch depuis l'application iOS pour obtenir les informations dont vous avez besoin.
Lei Zhang
Merci, mais je ne suis toujours pas en mesure de faire la différence entre un utilisateur qui a une montre sur watchOS 4 et ne peut pas installer l'application de montre et un utilisateur sur watchOS 5 qui peut installer l'application de montre mais ne l'a pas
Stephen
@Stephen essayez d'obtenir des informations Bluetooth que vous êtes intéressé par Link1 Link2
George
idée intéressante, malheureusement, la montre semble avoir un traitement spécial lorsqu'elle n'est pas disponible via les méthodes Bluetooth standard
Stephen
Pourquoi ne restreignez-vous pas simplement le watchOS Deployment Targetà 5.0?
Starsky

Réponses:

0

En fait, isWatchAppInstalledc'est la bonne façon de gérer ce scénario.

Comme l'indique la documentation:

L'utilisateur peut choisir d'installer uniquement un sous-ensemble d'applications disponibles sur Apple Watch. La valeur de cette propriété est vraie lorsque l'application Watch associée à l'application iOS actuelle est installée sur l'Apple Watch de l'utilisateur ou false lorsqu'elle n'est pas installée.

https://developer.apple.com/documentation/watchconnectivity/wcsession/1615623-iswatchappinstalled

La propriété ne regarde pas à l'intérieur du bundle pour voir si une application Watch est disponible. Cela ne reviendra vrai que si l'application Watch est installée sur l'Apple Watch actuellement couplée. Si l'utilisateur supprime l'application Watch de la montre, elle retournera false.

jawadAli
la source
Je cherche un moyen de savoir s'ils sont capables d'installer l'application de surveillance si elle n'est pas installée. Je dois distinguer si la version watchOS est compatible avec mon minimum
Stephen
Dans WatchKit, il y a l'objet WKInterfaceDevice, disponible à la fois côté iOS et watchOS, qui contient des informations sur la montre couplée.
jawadAli
let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
jawadAli
as-tu essayé ça?
jawadAli
1
WKInterfaceDevice ne peut être appelé que dans watchOS, pas dans iOS, voir la documentation .
Reinhard Männer
-1

Voici deux solutions possibles. Le numéro 1 vérifie le système d'exploitation qui, si je comprends votre question, vous le savez déjà, mais 2 vérifie la version du système d'exploitation qui est WatchOS 5.0 et versions ultérieures. C'est ce que j'ai fait et j'espère que cela vous aidera.

1.

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }
117MasterChief96
la source
Cela ne fonctionne pas lors de l'exécution dans une application iOS, uniquement lorsqu'il est déjà sur une application watchOS installée
Stephen
Ahh, je n'y ai pas pensé. Désolé. Que faire si vous avez vérifié l'environnement cible, puis vérifié la version du système d'exploitation disponible? Si targetEnvironment a une cible watchOS.
117MasterChief96
Je ne suis pas sûr de suivre. Où / comment contrôlez-vous l'environnement cible?
Stephen
Je n'ai pas vraiment utilisé cela auparavant mais je pensais à quelque chose comme ça #if targetEnvironment(watchOS). Si cela est même possible avec watchOS, puis à l'intérieur de cela, vous pouvez vérifier la version de watchOS 5.
117MasterChief96
Désolé, ce n'est pas vraiment ce que je demande. # si targetEnvironment est watchOS, il devrait être exécuté sur la montre. Je cherche un chèque d'iOS
Stephen