Wykryj wersję watchOS użytkownika z aplikacji na iOS

13

Mam aplikację na iOS, w której mam pewne ustawienia aplikacji na iOS związane z zegarkiem. Chcę je pokazać tylko wtedy, gdy użytkownik ma zegarek Apple Watch zgodny z moją aplikacją.

W WatchConnectivity mogę zapytać o właściwość isPaired WCSession, aby sprawdzić, czy użytkownik ma zegarek, ale nie mogę dowiedzieć się, jak określić wersję watchOS (aby korzystać z mojej aplikacji, musi być> 5.0).

Czy istnieje sposób na określenie wersji watchOS z aplikacji na iOS?

Stephen
źródło
Nie sądzę, że można sprawdzić wersję watchOS z iOS. Możesz jednak komunikować się między aplikacją zegarka z aplikacji na iOS, aby uzyskać potrzebne informacje.
Lei Zhang
Dzięki, ale nadal nie jestem w stanie powiedzieć różnicy między użytkownikiem, który ma zegarek na watchOS 4 i nie może zainstalować aplikacji zegarka, a użytkownikiem na watchOS 5, który może zainstalować aplikację na zegarek, ale nie ma
Stephen
@Stephen spróbuj uzyskać z informacji Bluetooth, które Cię interesują Link1 Link2
George
ciekawy pomysł, niestety zegarek wydaje się mieć specjalną obsługę, gdy nie jest dostępny za pomocą standardowych metod bluetooth
Stephen
Dlaczego nie ograniczysz watchOS Deployment Targetdo wersji 5.0?
Starsky

Odpowiedzi:

0

Właściwie isWatchAppInstalledto właściwy sposób radzenia sobie z tym scenariuszem.

Jak wynika z dokumentacji:

Użytkownik może wybrać instalację tylko części dostępnych aplikacji na Apple Watch. Wartość tej właściwości jest prawdziwa, gdy aplikacja Watch powiązana z bieżącą aplikacją iOS jest zainstalowana na Apple Watch użytkownika, lub false, jeśli nie jest zainstalowana.

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

Właściwość nie zagląda do pakietu, aby sprawdzić, czy aplikacja Watch jest dostępna. Zwróci wartość true tylko wtedy, gdy aplikacja Watch zostanie zainstalowana na aktualnie sparowanym zegarku Apple Watch. Jeśli użytkownik usunie aplikację Watch z zegarka, zwróci wartość false.

jawadAli
źródło
Szukam sposobu, aby stwierdzić, czy są w stanie zainstalować aplikację zegarka, jeśli nie jest zainstalowana. Muszę rozróżnić, czy wersja watchOS jest zgodna z moim minimum
Stephen
W WatchKit znajduje się obiekt WKInterfaceDevice, dostępny zarówno po stronie iOS, jak i watchOS, który zawiera informacje o sparowanym zegarku.
jawadAli
let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
jawadAli
próbowałeś tego?
jawadAli
1
WKInterfaceDevice można wywoływać tylko w systemie watchOS, a nie w systemie iOS, zobacz dokumentację .
Reinhard Männer,
-1

Oto dwa możliwe rozwiązania. Numer 1 sprawdza system operacyjny, który, jeśli rozumiem twoje pytanie, już znasz, ale następnie 2 sprawdza wersję systemu operacyjnego, czyli WatchOS 5.0 i nowsze. To właśnie zrobiłem, więc mam nadzieję, że ci to pomoże.

1.

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }
117 MasterChief96
źródło
To nie działa, gdy jest uruchomione w aplikacji na iOS, tylko gdy jest już zainstalowane na aplikacji watchOS
Stephen
Ahh, nie myślałem o tym. Przepraszam. Co się stanie, jeśli zaznaczysz środowisko docelowe, a następnie sprawdzisz dostępną wersję systemu operacyjnego? Jeśli obiekt targetEnvironment ma cel systemu watchOS.
117MasterChief96
Nie jestem pewien, czy podążam. Gdzie / jak sprawdzasz środowisko docelowe?
Stephen
Tak naprawdę wcześniej tego nie używałem, ale myślałem o czymś takim #if targetEnvironment(watchOS). Jeśli jest to nawet możliwe w systemie watchOS, a następnie w środku można sprawdzić wersję dla systemu watchOS 5.
117MasterChief96
Przepraszam, nie o to tak naprawdę proszę. # jeśli celem Środowisko to watchOS, musiałoby działać na zegarku. Szukam czeku z iOS
Stephen