Rileva la versione watchOS dell'utente dall'app iOS


13

Ho un'app iOS in cui ho alcune impostazioni nell'app iOS relative all'orologio. Voglio mostrarli solo se l'utente ha un Apple Watch compatibile con la mia app.

In WatchConnectivity posso interrogare la proprietà isPaired di WCSession per vedere se l'utente ha un orologio ma non riesco a capire come determinare la versione di watchOS (deve essere> 5.0 per usare la mia app).

Esiste un modo per determinare la versione di watchOS dall'app iOS?


Non credo che tu possa controllare la versione di watchOS da iOS. Tuttavia, è possibile comunicare tra l'app dell'orologio dall'app iOS per ottenere le informazioni necessarie.
Lei Zhang,

Grazie, ma non sono ancora in grado di dire la differenza tra un utente che ha un orologio su watchOS 4 e non può installare l'app orologio contro un utente su watchOS 5 che può installare l'app orologio ma non l'ha fatto
Stephen,

@Stephen prova a ottenere dalle informazioni bluetooth che ti interessa Link1 Link2
George

idea interessante, purtroppo l'orologio sembra avere una gestione speciale dove non è disponibile attraverso i metodi bluetooth standard
Stephen

Perché non limitate solo watchOS Deployment Targeta 5.0?
Starsky

Risposte:


0

In realtà isWatchAppInstalledè il modo corretto di affrontare questo scenario.

Come indica la documentazione:

L'utente può scegliere di installare solo un sottoinsieme di app disponibili su Apple Watch. Il valore di questa proprietà è vero quando l'app Watch associata all'attuale app iOS è installata sull'Apple Watch dell'utente o false quando non è installata.

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

La proprietà non guarda all'interno del bundle per vedere se è disponibile un'app Watch. Restituirà vero solo se l'app Watch è installata sull'Apple Watch attualmente associato. Se l'utente elimina l'app Watch dall'orologio, restituirà false.


Sto cercando un modo per sapere se sono in grado di installare l'app per l'orologio se non è installata. Devo distinguere se la versione di watchOS è compatibile con il mio minimo
Stephen

In WatchKit, c'è l'oggetto WKInterfaceDevice, disponibile sia sul lato iOS che su watchOS, che contiene informazioni sull'orologio associato.
jawad Ali

let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
jawad Ali

l'hai provato?
jawad Ali

1
WKInterfaceDevice può essere chiamato solo in watchOS, non in iOS, vedere i documenti .
Reinhard Männer, il

-1

Ecco due possibili soluzioni. Il numero 1 controlla il sistema operativo che, se capisco la tua domanda, lo sai già, ma poi 2 controlla la versione del sistema operativo che è WatchOS 5.0 e versioni successive. Questo è quello che ho fatto, quindi spero che ti aiuti.

1.

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }

Questo non funziona quando si esegue in un'app iOS, solo quando è già su un'app watchOS installata
Stephen

Ahh, non ci ho pensato. Scusate. Cosa succede se si controlla TargetEnvironment e quindi si verifica la versione del sistema operativo disponibile? Se targetEnvironment ha un target watchOS.
117MasterChief96

Non sono sicuro di seguire. Dove / come stai controllando targetEnvironment?
Stephen,

Non l'ho mai usato prima ma stavo pensando a qualcosa del genere #if targetEnvironment(watchOS). Se ciò è possibile anche con watchOS, e al suo interno puoi verificare la versione di watchOS 5.
117MasterChief96,

Mi dispiace, questo non è proprio quello che sto chiedendo. #se targetEnvironment è watchOS, dovrebbe essere in esecuzione sull'orologio. Sto cercando un assegno da iOS
Stephen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.