Определить версию watchOS пользователя из приложения iOS

13

У меня есть приложение для iOS, где у меня есть некоторые настройки в приложении для iOS, связанные с часами. Я хочу показать их, только если у пользователя есть Apple Watch, совместимые с моим приложением.

В WatchConnectivity я могу запросить свойство isPaired WCSession, чтобы узнать, есть ли у пользователя часы, но я не могу понять, как определить версию watchOS (для использования моего приложения она должна быть> 5,0).

Есть ли способ определить версию watchOS из приложения iOS?

Стивен
источник
Я не думаю, что вы можете проверить версию watchOS от iOS. Тем не менее, вы можете общаться между приложением часов из приложения iOS и получать необходимую информацию.
Лэй Чжан
Спасибо, но я все еще не могу отличить пользователя, который имеет часы на watchOS 4 и не может установить приложение для часов, и пользователя на watchOS 5, который может установить приложение для часов, но не сделал этого
Стивен
@Stephen попробуйте получить от Bluetooth информацию, которая вас интересует Link1 Link2
Джордж
интересная идея, к сожалению, часы, кажется, имеют специальную обработку, где они не доступны через стандартные методы Bluetooth
Стивен
Почему бы вам просто не ограничить watchOS Deployment Targetдо 5.0?
Старски

Ответы:

0

На самом деле isWatchAppInstalledэто правильный способ справиться с этим сценарием.

Как указано в документации:

Пользователь может выбрать установку только части доступных приложений на Apple Watch. Значение этого свойства равно true, если приложение Watch, связанное с текущим приложением iOS, установлено на Apple Watch пользователя, или false, если оно не установлено.

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

Свойство не ищет внутри пакета, чтобы увидеть, доступно ли приложение Watch. Он вернет true, только если приложение Watch установлено на подключенных в данный момент Apple Watch. Если пользователь удалит приложение Watch из часов, оно вернет false.

jawadAli
источник
Я ищу способ сказать, способны ли они установить приложение для часов, если оно не установлено. Мне нужно различать, совместима ли версия watchOS с моим минимумом
Стивен
В WatchKit есть объект WKInterfaceDevice, доступный как на iOS, так и на стороне watchOS, который содержит информацию о парных часах.
Джавад Али
let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
Джавад Али
ты пробовал это?
Джавад Али
1
WKInterfaceDevice можно вызывать только в watchOS, но не в iOS, см. Документацию .
Рейнхард Маннер
-1

Вот два возможных решения. Номер 1 проверяет ОС, которая, если я понимаю ваш вопрос, вы уже знаете, но затем 2 проверяет версию ОС, которая является WatchOS 5.0 и выше. Это то, что я сделал, поэтому я надеюсь, что это поможет вам.

1.

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }
117MasterChief96
источник
Это не работает при запуске в приложении iOS, только если оно уже установлено в приложении watchOS
Стивен
Ах, я не думал об этом. Сожалею. Что если вы проверили targetEnvironment, а затем проверили доступную версию ОС? Если targetEnvironment имеет цель watchOS.
117MasterChief96
Не уверен, что я следую. Где / как вы проверяете targetEnvironment?
Стивен
Я действительно не использовал это раньше, но я думал что-то вроде #if targetEnvironment(watchOS). Если это даже возможно с watchOS, а затем внутри этого вы можете проверить версию для watchOS 5.
117MasterChief96
Извините, это не совсем то, о чем я прошу. #if targetEnvironment - watchOS, он должен быть запущен на часах. Я ищу чек от iOS
Стивен