我有点好奇在以下情况下会发生什么。您在使用iOS4的iTunes商店(与客户)上有现有应用程序,然后您发布使用较新iOS的应用程序的更新。
答案 0 :(得分:11)
您的“部署目标”才是最重要的。设置部署目标允许您的应用程序设置其所需的最低操作系统版本。许多开发人员喜欢尽可能地设置它,除非您的应用程序依赖于仅在新iOS版本中提供的功能。
假设您有一个使用iOS 4 SDK编译的应用程序,并将3.0设置为部署目标。
现在,您发布了使用iOS 5 SDK编译的更新,并将4.0设置为部署目标。
Apple只会在应用商店中保留一个版本的应用。
答案 1 :(得分:1)
通常(虽然并非总是如此),新操作系统与之前的操作系统相同,但具有新功能。较旧版本的应用程序通常使用最新的操作系统,但不利用新功能。用户通常遇到的唯一问题是崩溃问题,但这完全取决于您在应用中使用的API。
此外,用户永远不会“强制”更新 - 它们始终是可选的。如果应用程序仅适用于iOS版本高于用户的版本,则根本不会向用户提供更新。他们仍然可以使用他们在设备上安装的旧版本。应用没有到期日。
如果您希望保留尽可能多的iOS版本的兼容性,可以将iOS部署目标设置为您希望应用兼容的最低操作系统。 SDK版本号无关紧要,但为了支持最新的iOS功能,您需要最新的iOS SDK。
您仍然需要检查API与您作为最低操作系统定位的版本的兼容性。查看here并搜索“API Diffs”。每个文档都列出了该iOS版本的API更改。这将列出该版本的新API和已删除的API。例如,iOS 4.1到4.2 API差异文档中列出的UIPrintPaper
是iOS 4.2的新API。因此,在iOS 4.1或更早版本上运行时,应用程序将在调用该API时崩溃。在您的#if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_4_1
剪贴板周围使用UIPrintPaper
可以解决该问题。
答案 2 :(得分:1)
除非他们下载更新版本,否则他们当然仍然可以使用旧版本。然而,他们可能会通过桌面上的iTunes无意中下载更新。设备上的App Store会检查设备的操作系统版本是否与正在下载的应用程序兼容,但iTunes没有,因此它会替换iTunes资料库中的旧版本,从而导致应用程序从设备中删除用户同步它(因为无法安装下载的版本)。
因此,对于现有应用程序,您应该尽可能降低部署目标,并在运行时确定可以使用的新操作系统版本的其他功能。这样,您可以保持与旧操作系统版本的兼容性,但仍为已升级的用户提供其他功能。