Detecta la versión watchOS del usuario desde la aplicación iOS

13

Tengo una aplicación de iOS donde tengo algunas configuraciones en la aplicación de iOS relacionadas con el reloj. Solo quiero mostrarlos si el usuario tiene un Apple Watch compatible con mi aplicación.

En WatchConnectivity, puedo consultar la propiedad isPaired de WCSession para ver si el usuario tiene un reloj, pero no puedo entender cómo determinar la versión de watchOS (debe ser> 5.0 para usar mi aplicación).

¿Hay alguna manera de determinar la versión de watchOS desde la aplicación iOS?

Stephen
fuente
No creo que puedas consultar la versión de watchOS desde iOS. Sin embargo, puede comunicarse entre la aplicación de reloj desde la aplicación de iOS para obtener la información que necesita.
Lei Zhang
Gracias, pero todavía no puedo distinguir la diferencia entre un usuario que tiene un reloj en watchOS 4 y no puede instalar la aplicación de reloj frente a un usuario en watchOS 5 que puede instalar la aplicación de reloj pero no lo ha hecho
Stephen
@Stephen intenta obtener de la información de bluetooth que te interesa Link1 Link2
George
idea interesante, desafortunadamente el reloj parece tener un manejo especial donde no está disponible a través de los métodos estándar de bluetooth
Stephen
¿Por qué no limitas el watchOS Deployment Targeta 5.0?
Starsky

Respuestas:

0

En realidad isWatchAppInstalledes la forma correcta de lidiar con este escenario.

Como dice la documentación:

El usuario puede elegir instalar solo un subconjunto de aplicaciones disponibles en Apple Watch. El valor de esta propiedad es verdadero cuando la aplicación Watch asociada con la aplicación iOS actual está instalada en el Apple Watch del usuario o falso cuando no está instalado.

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

La propiedad no mira dentro del paquete para ver si hay una aplicación Watch disponible. Solo volverá verdadero si la aplicación Watch está instalada en el Apple Watch actualmente emparejado. Si el usuario elimina la aplicación Watch del reloj, devolverá false.

jawadAli
fuente
Estoy buscando una manera de saber si son capaces de instalar la aplicación de reloj si no está instalada. Necesito distinguir si la versión de watchOS es compatible con mi mínimo
Stephen
En WatchKit, está el objeto WKInterfaceDevice, disponible en el lado de iOS y watchOS, que contiene información sobre el reloj emparejado.
jawadAli
let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
jawadAli
has intentado eso?
jawadAli
1
WKInterfaceDevice solo se puede llamar en watchOS, no en iOS, consulte los documentos .
Reinhard Männer
-1

Aquí hay dos posibles soluciones. El número 1 verifica el sistema operativo que si entiendo su pregunta ya lo sabe, pero luego el 2 verifica la versión del sistema operativo que es WatchOS 5.0 y posterior. Esto es lo que he hecho, así que espero que te ayude.

1)

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }
117 Master Master 96
fuente
Esto no funciona cuando se ejecuta en una aplicación iOS, solo cuando ya está en una aplicación watchOS instalada
Stephen
Ahh, no pensé en eso. Lo siento. ¿Qué sucede si verificó el entorno de destino y luego verificó la versión disponible del sistema operativo? Si targetEnvironment tiene un objetivo watchOS.
117MasterChief96
No estoy seguro de seguir. ¿Dónde / cómo está comprobando el entorno de destino?
Stephen
Realmente no he usado esto antes, pero estaba pensando algo así #if targetEnvironment(watchOS). Si eso es posible con watchOS, y luego dentro de eso, puede verificar la versión de watchOS 5.
117MasterChief96
Lo siento, esto no es realmente lo que estoy pidiendo. #si targetEnvironment es watchOS, debería ejecutarse en el reloj. Estoy buscando un cheque de iOS
Stephen