从 iOS 应用检测用户的 watchOS 版本

Posted

技术标签:

【中文标题】从 iOS 应用检测用户的 watchOS 版本【英文标题】:Detect user's watchOS version from iOS app 【发布时间】:2020-02-13 18:13:07 【问题描述】:

我有一个 ios 应用程序,其中有一些与手表相关的 iOS 应用程序设置。我只想在用户拥有与我的应用兼容的 Apple Watch 时向他们展示。

在 WatchConnectivity 中,我可以查询 WCSession 的 isPaired 属性以查看用户是否有手表,但我不知道如何确定 watchOS 版本(它需要 >5.0 才能使用我的应用程序)。

有没有办法从 iOS 应用中确定 watchOS 版本?

【问题讨论】:

我认为您无法从 iOS 查看 watchOS 版本。但是,您可以通过 iOS 应用在手表应用之间进行通信,以获取您需要的信息。 谢谢,但我仍然无法区分在 watchOS 4 上拥有手表但无法安装手表应用程序的用户与在 watchOS 5 上可以安装手表应用程序的用户之间的区别但没有 @Stephen 尝试从蓝牙获取你感兴趣的信息Link1Link2 有趣的想法,不幸的是,手表似乎有特殊处理,无法通过标准蓝牙方法获得 你为什么不把 watchOS Deployment Target 限制为 5.0 呢? 【参考方案1】:

这里有两种可能的解决方案。 1 号检查操作系统,如果我理解您已经知道的问题,那么 2 号检查操作系统版本,即 WatchOS 5.0 及更高版本。这就是我所做的,希望对您有所帮助。

1.

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

【讨论】:

这在 iOS 应用程序中运行时不起作用,只有在已安装的 watchOS 应用程序上运行时才有效 啊,我没想到。对不起。如果您检查了 targetEnvironment,然后检查了可用的操作系统版本怎么办?如果 targetEnvironment 有 watchOS 目标。 不确定我是否关注。您在哪里/如何检查目标环境? 我之前没有真正使用过这个,但我在想像#if targetEnvironment(watchOS)这样的东西。如果 watchOS 甚至可以做到这一点,那么您可以在其中检查 watchOS 5 的版本。 对不起,这不是我真正想要的。 #if targetEnvironment 是 watchOS,它需要在手表上运行。我正在寻找来自 iOS 的支票

以上是关于从 iOS 应用检测用户的 watchOS 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何从 watchOS 应用打开 App Store?

如何在后台从伴侣手表应用程序启动主 iOS 应用程序?

iOS 检测购买的版本以更改功能

从 ios 向 watchos 发送消息的问题

通过蓝牙将实时加速度计数据从 WatchOS 共享到 iOS 应用程序

在 iOS 和 WatchOS 之间共享核心数据