Detectar a versão watchOS do usuário no aplicativo iOS

13

Eu tenho um aplicativo iOS em que tenho algumas configurações no aplicativo iOS relacionadas ao relógio. Eu só quero mostrá-los se o usuário tiver um Apple Watch compatível com meu aplicativo.

No WatchConnectivity, posso consultar a propriedade isPaired do WCSession para ver se o usuário tem um relógio, mas não consigo descobrir como determinar a versão do watchOS (ele precisa ser> 5.0 para usar meu aplicativo).

Existe uma maneira de determinar a versão do watchOS no aplicativo iOS?

Stephen
fonte
Eu não acho que você pode verificar a versão do watchOS no iOS. No entanto, você pode se comunicar entre o aplicativo de exibição do aplicativo iOS para obter as informações necessárias.
Lei Zhang
Obrigado, mas ainda não sou capaz de dizer a diferença entre um usuário que possui um relógio no watchOS 4 e não pode instalar o aplicativo de relógio em comparação com um usuário no watchOS 5 que pode instalar o aplicativo de relógio, mas não tem
Stephen
@ Stephen tenta obter informações a partir do bluetooth que você está interessado em Link1 Link2
George
idéia interessante, infelizmente, o relógio parece ter um manuseio especial onde não está disponível através dos métodos padrão do bluetooth
Stephen
Por que você não restringe apenas o watchOS Deployment Targetpara 5.0?
Starsky

Respostas:

0

Na verdade, isWatchAppInstalledé a maneira correta de lidar com esse cenário.

Como a documentação declara:

O usuário pode optar por instalar apenas um subconjunto de aplicativos disponíveis no Apple Watch. O valor dessa propriedade é verdadeiro quando o aplicativo Watch associado ao aplicativo iOS atual é instalado no Apple Watch do usuário ou falso quando não está instalado.

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

A propriedade não olha dentro do pacote para ver se um aplicativo Watch está disponível. Ele só retornará verdadeiro se o aplicativo Watch estiver instalado no Apple Watch atualmente emparelhado. Se o usuário excluir o aplicativo Watch do relógio, ele retornará falso.

jawadAli
fonte
Estou procurando uma maneira de saber se eles são capazes de instalar o aplicativo de relógio, se ele não estiver instalado. Preciso distinguir se a versão do watchOS é compatível com o meu mínimo
Stephen
No WatchKit, há o objeto WKInterfaceDevice, disponível no lado iOS e watchOS, que contém informações sobre o relógio emparelhado.
jawadAli
let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
jawadAli
você já tentou isso?
jawadAli
11
WKInterfaceDevice só pode ser chamado no watchOS, não no iOS, consulte os documentos .
Reinhard Männer
-1

Aqui estão duas soluções possíveis. O número 1 verifica o sistema operacional que, se eu já tiver entendido a sua pergunta, mas 2 verifica a versão do sistema operacional que é o WatchOS 5.0 e posterior. Foi isso que fiz, espero que ajude você.

1

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }
117MasterChief96
fonte
Isso não funciona quando executado em um aplicativo iOS, somente quando já em um aplicativo watchOS instalado
Stephen
Ahh, eu não pensei nisso. Desculpa. E se você verificou o targetEnvironment e depois a versão disponível do sistema operacional? Se targetEnvironment tiver um destino watchOS.
117MasterChief96
Não tenho certeza se eu sigo. Onde / como você está verificando o targetEnvironment?
Stephen
Eu realmente não usei isso antes, mas estava pensando em algo assim #if targetEnvironment(watchOS). Se isso é possível com o watchOS, e dentro dele você pode verificar a versão do watchOS 5.
117MasterChief96
Desculpe, isso não é realmente o que estou pedindo. #se targetEnvironment for watchOS, ele precisará estar em execução no relógio. Estou procurando um cheque no iOS
Stephen