我开发的应用程序(使用Swift 3和xcode 8)已经为iOS 10做好了准备,但是我的老板希望它可以与iOS 8一起使用,因为他有一部带有8.2的iPhone:当我将他的iPhone插入我的Mac并开始使用时构建项目时,它失败了,因为某些功能仅在iOS 9.0或更高版本上可用。
我做了一些研究并遇到了一些选择,但由于我是初学者,所以我不知道什么会更好。让我与你分享:
答案 0 :(得分:1)
最好的解决方案是以编程方式检查iOS版本,并且只有在用户的手机实际支持它们时才调用有问题的方法。否则,请保持对用户隐藏该功能。
这是您可以从代码中检查iOS版本的方法:
if #available(iOS 9, *) {
// iOS 9 Swift code
} else {
//Hide the methods from the users on older OS versions
}
这不会起作用,因为大多数系统API都不依赖于语言。如果仅在某个iOS版本中添加某个API /功能,则无论您使用的是Objective-C还是Swift,该要求都保持不变。
与1相同。
当然,这是一个可行的选择。
AFAIK,您可以在以后的更新中更改目标iOS版本。
如果您想要实现使用仅在iOS9中引入的API的功能,即使混合框架使用内置iOS API,也需要iOS版本。
答案 1 :(得分:0)
要添加iOS 8兼容性,您必须将部署目标版本更改为8.0,并解决在您尝试构建/运行时Xcode为您提供的每个警告/问题。
如果使用在版本8和版本10之间更改的API,则需要使用if #available(iOS 9, *) {}
代码。
答案 2 :(得分:0)
您无需在目标c中重写任何内容。对于要调用的功能,研究iOS 8兼容的方式来实现它们(如果可能的话)并在代码中添加iOS版本的检查,以便某些块仅针对某些操作系统执行。 (参见已提供的技术答案)
但是,先向老板展示如何更新手机。
然后告诉你的老板97%的用户正在使用9或10。 https://developer.apple.com/support/app-store/
接下来提醒他,3%的过时用户也是下载应用程序的可能性最低的3%,只有3%的部分用户在iOS 8上。许多人甚至更加过时了。
然后计算支持iOS 8所需的小时数。乘以小时费率。然后问你的老板是否值得用X来扩展你的应用程序的用户群,最多只需要1%。
如果他说是,那就去吧。