如何将一个应用程序添加到 App Store,而在这个应用程序中,一个用于 ios7,一个用于其余的?
Posted
技术标签:
【中文标题】如何将一个应用程序添加到 App Store,而在这个应用程序中,一个用于 ios7,一个用于其余的?【英文标题】:How can I add one app to the App Store and in this app there is one for ios7 and one for the rest? 【发布时间】:2013-06-18 17:39:30 【问题描述】:您好,因为 ios 7 中有很多东西在 iOS 6 及周边地区无法正常工作。我想知道是否有可能在同一个应用程序下的 App Store 上有两个版本的应用程序。是否有可能让拥有 iOS 6 的人下载应用程序时,他们会获得针对 ios 6 优化的应用程序,而当拥有 ios 7 的人下载应用程序时,他们会获得针对 iOS 7 优化的应用程序。我必须创建吗?应用商店上有两个不同的应用?
请帮忙。
【问题讨论】:
如何重用代码并使用 iOS 7 的特定部分?提交两个应用似乎不是一个好主意。 为什么你认为你需要两个应用程序?没有理由为什么单个应用程序不能正确支持 iOS 7 一直到 iOS 4.3。自 iOS 3 推出以来,人们一直在一个应用程序中支持多个版本的 iOS。 如果对您有帮助,请接受我的回答。如果您仍然需要清除更多内容,请告诉我,以便我改进。 【参考方案1】:您不能为一个应用(单个构建文件)提交两个不同的版本,想想看 - 这没有任何意义。 您可以在应用程序内部检查它运行的设备上的 iOS 版本,但这样做非常糟糕,因为这有一天会损坏。
建议在你愿意使用一个新特性之前检查一下这个特性是否在你运行的版本上实现,例如你想检查你是否可以使用:
[[AVAudioSession sharedInstance] requestRecordPermission];
你应该检查这个是否为真(只有当这个函数被实现时才应该返回真):
[[AVAudioSession sharedInstance] respondsToSelector:
@selector(requestRecordPermission)]
使用它的最大优点是它可以在 iOS 7.x 上运行,并且如果它将在 iOS 8.x 上得到支持等等,它也会返回 true。
另一个很大的优势是,您只会有专门针对操作系统支持的小部分,而不是每个版本的完整应用程序(更易于维护)。
库:您应该注意要链接的库。如果您使用的是以前的 iOS 版本不支持的新库,您应该将它们标记为“可选”而不是“必需”(这是默认设置)。
最后一件事,如果您确实想为每个操作系统创建单独的应用程序(如果我没有成功解释它的错误),您可以随时添加一个新目标(只需复制您正在处理的目标)并设置相应的参数。请注意,Apple 只允许您限制可以下载该应用程序的最旧版本而不是最新版本,因此使用 iOS 7 的用户可能能够下载专用于 iOS 6 的应用程序,因此它也应该可以工作(也许不是所有伟大的 7 功能,但必须工作)。
希望对大家有所帮助,如有不足请在下方评论。
【讨论】:
【参考方案2】:您不能在 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)
【讨论】:
检查系统版本很少是个好主意。检查实际功能、类或方法总是更好。 同意最好检查特性、类或方法。您应该检查 iOS 版本作为最后的手段,例如如果 api 的行为在最新的 iOS 版本中发生变化/损坏,并且雷达已填充但尚未修复。以上是关于如何将一个应用程序添加到 App Store,而在这个应用程序中,一个用于 ios7,一个用于其余的?的主要内容,如果未能解决你的问题,请参考以下文章
App Store Connect 无法将构建添加到外部测试人员或提交构建