1

嗨,因为 ios 7 中有很多东西在 iOS 6 及周围无法正常工作。我想知道是否有可能在同一个应用程序下的 App Store 上有两个版本的应用程序。是否有可能使拥有 iOS 6 的人下载应用程序时,他们会获得针对 ios 6 优化的应用程序,而当拥有 ios 7 的人下载应用程序时,他们会获得针对 iOS 7 优化的应用程序。我必须创建吗? appstore上有两个不同的应用程序?

请帮忙。

4

2 回答 2

5

您不能为一个应用程序(单个构建文件)提交两个不同的版本,想想看 - 这没有任何意义。您可以在应用程序内部检查它运行的设备上的 iOS 版本,但这是非常糟糕的事情,因为总有一天会中断。

建议您在愿意使用新功能之前检查该功能是否在您正在运行的版本上实现,例如如果您想检查是否可以使用:

[[AVAudioSession sharedInstance] requestRecordPermission];

您应该检查这个是否为真(只有在实现此功能时才应返回真):

[[AVAudioSession sharedInstance] respondsToSelector:
                                 @selector(requestRecordPermission)]

使用它的最大优点是它可以在 iOS 7.x 上运行,并且如果它在 iOS 8.x等上受支持,它也会返回 true。

另一个很大的优势是您将只有一小部分特定于操作系统支持,而不是每个版本的完整应用程序(更易于维护)。

:您应该注意要链接的库。如果您正在使用以前的 iOS 版本不支持的新库,您应该将它们标记为“可选”而不是“必需”(这是默认设置)。

最后一件事,如果您确实想为每个操作系统创建单独的应用程序(如果我没有成功解释它有多么错误),您可以随时添加一个新目标(只需复制您正在处理的目标)并相应地设置参数. 请注意,Apple 只允许您限制可以下载该应用程序的最旧版本而不是最新版本,因此使用 iOS 7 的用户可能能够下载专用于 iOS 6 的应用程序,因此它也应该可以工作(也许不是所有伟大的 7 功能,但必须工作)。

希望对您有所帮助,如果有什么遗漏,请在下方评论。

于 2013-06-18T20:30:55.590 回答
-3

您不能在 App Store 上拥有同名的应用程序的两个版本。

检查@rmedy 评论和@ldan 答案以获得更好的选项来为不同版本构建应用程序。

作为最后的手段,您可以在您的应用程序中检查 iOS 版本以做出决定。以下是一些可能有用的宏:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice]   systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
于 2013-06-18T18:16:29.137 回答