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?


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.


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
    }

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.