阻止应用程序在 iOS 3.2 上运行而不在 3.1 上阻止它

Posted

技术标签:

【中文标题】阻止应用程序在 iOS 3.2 上运行而不在 3.1 上阻止它【英文标题】:Blocking app from running on iOS 3.2 without blocking it on 3.1 【发布时间】:2011-09-23 16:01:22 【问题描述】:

我想发布一个在旧 iPhone 上运行的应用程序 - 即在 3.1 上运行 - 但阻止它在 iPad 的 ios 3.2 上运行。

游戏可以在装有 iOS 3.1.3 及更高版本的 iPhone 以及装有 iOS 4 及更高版本的 iPad 上完美运行。但是,在装有 iOS 3.2 的 iPad 上会出现一些缩放问题。

是否可以阻止该应用在 iTunes Store 上显示为与 iOS 3.2 兼容并阻止其在 iOS 3.2 上安装,但仍使其在 iOS 3.1.3 上运行?


一些说明:

我们绝对不想屏蔽 iPad 用户。 游戏完全可以在装有 iOS 3.1.3 的 iPhone 和 iPod Touch 上运行。 游戏完全可以在装有 iOS 4 的 iPad 上运行。 唯一有问题的组合是装有 iOS 3.2 的 iPad。 运行时解决方案不是我们想要的。

我怀疑这是由于 Apple 用于视网膜显示器的缩放代码意外进入 iOS 3.2。虽然我当然可以花大量时间来确定问题,但我不喜欢这样。 iOS 3.2 用户基数较小,iPad 用户没有理由避免升级。同时,我们尽量不切断因速度下降而无法升级或不想升级的 iPhone 2G、iPhone 3G、iPod Touch 1G 和 iPod Touch 2G 用户。

此外,告诉用户他们刚刚购买了一个无法在他们的设备上运行的应用,这会导致糟糕的用户体验。阻止通过 App Store 安装特定版本的操作系统是理想的,同时也不会阻止所有较低版本。

【问题讨论】:

一旦有人更新他们的操作系统,它就会破坏你的应用程序。如果这样做,Apple 将从商店中删除应用程序。正确的解决方案是修复您的应用。 对我来说听起来像个警察。纠正您在 ipad 上遇到的缩放问题有多难?我的意见是为 iOS >3.2 构建并排除旧的 iphone 软件,或者如果它很重要,那么纠正你在 iPad 上遇到的问题。 我认为 Apple 不会批准任何明确排除 iPad 的软件。不要这样做——正如上面的海报所说,你应该修复你的应用程序。 @JonathanGrynspan:3.2 是最初的 iPad 操作系统,没有人升级到它。所有作品都在 4 岁以上。 @ThomasClayson:这相当困难,因为它似乎是一个仅在 3.2 上出现的 Apple 错误。游戏是 IB 和非 IB 代码和黑客的混合体。只有 3.2 会导致问题,我们不想放弃无法升级的人,例如 1G 设备的所有者,或者不想降低其设备速度的人,例如 2G 设备的所有者。 iOS 3.2 的 iPad 用户可以升级,为什么不呢? 【参考方案1】:

从技术上讲,您可以做到这一点。 不建议这样做! 例如。在 applicationDidFinishLaunching 你可以这样做:

if ( [[[UIDevice currentDevice] model] rangeOfString:@"iPad"] != NSNotFound && [[[UIDevice currentDevice] systemVersion] floatValue]==3.2) 
    exit(0);

Apple 有足够高的机会批准该应用程序。不是因为他们会对您的解决方案感到满意,而是因为他们不会在装有 iOS 3.2 的 iPad 上测试您的应用。 除了 iPad 3.2,您无法允许在 3.1 及更高版本上运行应用程序。 我认为阻止您的应用安装在 3.2 上的唯一合法方法 - 将 3.2.1 设置为您的应用的部署目标。 如果您不能保证您的应用可以在所有设备上运行,请将部署目标调高.

【讨论】:

太棒了,所以使用 iOS 3.2 的 iPad 用户购买了该应用程序,它在启动时“崩溃”。这肯定有助于获得好评...... @omz,我清楚地表明这在技术上是可行的,但这不是首选方式。 这太可怕了。使用 ipad 3.2 的人会下载该应用程序,然后就无法打开它。 删除了我的反对票。从技术上讲,您正在回答这个问题。除非你想与你的用户和苹果争吵,否则不要这样做。 @Thomas Clayson,是的。这就是为什么我建议将部署目标移至 3.2.1。

以上是关于阻止应用程序在 iOS 3.2 上运行而不在 3.1 上阻止它的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 XCode 下载和安装 iOS 和 OSX 库?

dateFromString 在 iOS 4.2 上返回 nil,在 3.2 上运行良好!

iOS - 关键字不在网址中时阻止内容

应用程序将在设备上运行,但不在 iOS 模拟器上

为什么不在主线程上加载图像?

iOS:处理方向更改而不在视图控制器上启用横向模式