【发布时间】:2020-10-25 20:55:33
【问题描述】:
我希望能够以某种方式检测我的应用是否在 macOS 11 的测试版上运行,因为我想告知用户一些已知的错误。我只想向 macOS 11 beta 用户显示这样的警报,这意味着既不是 macOS 10.15 用户也不是 macOS 11 最终版本的用户。我当然可以提交一个应用程序更新以在 macOS 11 接近完成时删除警报,但如果有一些可重复使用的东西我可以在多个应用程序和未来的 macOS beta 版本中使用,那就太好了。
约束:
- 应用已被沙盒化。
- 该应用在 App Store 中,因此没有私有 API。
- 该应用没有网络授权,因此需要离线检测。
- 我不想捆绑已知 macOS 内部版本号的列表并进行比较。
我的想法是,也许可以使用某种嗅探。 macOS 版本为 beta 版本时,可能有一些 API 会返回不同的结果。
【问题讨论】:
-
如果它运行的是 macOS 11,根据定义,它不是运行 Beta 版吗?操作系统完成后,更新您的应用程序。据我所知,没有“beta”标志,没有水晶球也无法知道最终(发布)版本号是多少。
-
@JamesBucanek 您的评论已包含在问题文本中。请阅读。
-
为什么检查随机操作系统功能比硬编码版本号更好?检查操作系统版本是解决此类问题的常用方法。此外,每个人都习惯于在 macOS 测试版上工作,所以这可能不是什么大问题。
-
这是个好问题,我也有。我可以想到很多笨拙的方法来做到这一点,但没有离线、沙盒和没有硬编码任何东西。我能想到的最好的方法是将“测试版本”编码到应用程序的每个版本中。然后比较主机操作系统版本,如果版本更高(不包括最后一位),则显示“未经测试的操作系统”警告。但是 Apple 将编号方案更改为 11.0 使得现在很难预测这些数字的含义。下一个是12.0吗? 11.1 意味着什么?也可以测试它是否在 6 月和 10 月之间:)
标签: swift macos cocoa beta macos-big-sur