支持 iOS 6 和 7
Posted
技术标签:
【中文标题】支持 iOS 6 和 7【英文标题】:Supporting iOS 6 and 7 【发布时间】:2014-01-14 07:14:17 【问题描述】:我们目前正在开发一款 ios 应用,自 2 个月前开始开发以来,我们决定仍然支持 iOS6。 因此,我研究了如何做到这一点,并在 SO 上找到了一些答案,建议包含旧的 iOS6 SDK,以确保我们不会意外使用 iOS7 的功能。
现在我刚刚收到一封苹果开发者的电子邮件,标题为为 iOS 7 构建应用程序。该电子邮件称,2014 年 2 月 1 日之后提交的所有应用程序都必须使用 iOS7 SDK 构建。
我想我仍然可以在开发结束时使用 iOS7 SDK 编译整个应用程序并将部署目标设置为 6.1,并且在开发过程中只使用 iOS6 SDK。
制作兼容 iOS6 的应用程序并确保没有意外使用 iOS7 功能的官方方法是什么?
【问题讨论】:
这个问题是题外话,因为它是关于 App Store 合规性,而不是编码问题。请看Are developer-centric questions about application stores on topic for Stack Overflow? @JoshCaswell 好吧,部分原因至少是如何支持两个版本,这是一个编码问题。 是的,您可以使用 iOS 7 SDK 编译您的应用并将其发送到应用商店。 【参考方案1】:您的应用可能会被拒绝。 Apple 通常允许宽限期,特别是如果应用程序之前存在 - 但不能保证。使用全新的应用程序可能会遇到困难。但是,我不建议继续使用 SDK6。
如果您想让您的 SDK7 应用程序与 iOS6 兼容,您必须使用respondsToSelector:
在运行时检查目标设备上是否存在方法。如果没有,您将不得不进入不同的代码分支。或者,您可以选择根本不使用任何 iOS7 特定 API。
请注意,还有一些特殊的事情需要注意,不仅要让您的应用运行,还要在两个版本上看起来都不错。 Apple 提供了transitioning to iOS7 while still supporting iOS6 的指南。
在所有情况下,您都必须确保您的应用可以在两个 iOS 版本上运行,这意味着您至少需要两台设备。
【讨论】:
宽限期不是他们在一个多月前宣布停止接受 iOS 6.x SDK 更新到 2 月 1 日之间的时间吗? 是和不是。至少在 iOS5/6 之后,我在提交之前的 SDK 版本时没有问题。但我的应用程序之前已经存在。这就是为什么我写了没有保证。这次可能完全不同。 @Krumelur:感谢您的回答。添加respondsToSelector
以建立与较低iOS 版本的兼容性感觉有点像“膨胀”代码。这实际上是我宁愿避免的事情。对我来说,将 SDK 设置为 iOS6 似乎更有意义。我可以轻松放弃新的 ios7 东西。但是ios6的兼容性很重要。该应用程序将是全新的顺便说一句。也感谢您的链接。以上是关于支持 iOS 6 和 7的主要内容,如果未能解决你的问题,请参考以下文章
最佳实践。通过支持 iOS 5、iOS 6 和 iOS 7 UI 使 iOS 应用程序通用