仅限特定的iOS目标设备进行App Store提交

16

因为在 iPhone 4 设备上出现了运行问题,我的iTunes应用商店提交被退回了。

基本上,这个应用程序的所有网络活动都会交给后台线程,以便UI不会在等待服务器在慢速(蜂窝)数据连接上传回响应时锁定。这在像iPad 2 + iPhone 4S这样的双核设备上运行良好,但会导致较旧的单核硬件如iPad/iPhone 4反应时间缓慢和错误。

我在提交中附上了相关说明,但我想知道是否有一种正式的方法来限制iTunes Connect中的目标设备?

谢谢!


不,你不能限制设备,但是你可以限制应用程序可用的iOS版本。例如iOS 5.1+。 - Manuel
听起来像是你的代码出了问题。标准的网络活动不应该引起你所描述的问题。 - Mike Weller
你不需要多个核心来在后台线程上运行代码。我从未听说过任何处理器有“每个核心一个线程”的政策。 - Nate
这可能会解决你的问题。http://www.itworld.com/article/2934373/with-ios-9-developers-will-be-able-to-limit-their-apps-to-newer-devices.html - durazno
http://blog.manbolo.com/2012/05/02/how-to-indicate-what-devices-are-supported-by-your-ios-app - FindOut_Quran
4个回答

20

实际上,可能有一种方法:

在你的Info.plist中添加一个项目到UIRequiredDeviceCapabilities,要求bluetooth-le,这样就可以将你的应用限制在iPhone 4S/5和iPad 3、4和mini上了。如果需要,你也可以加入一个camera-flash的要求,以仅限制应用在iPhone上。

参见DeviceCompatibilityMatrix


没有考虑到蓝牙低功耗,这个点赞。你不应该使用闪光灯来制作仅适用于iPhone的应用程序,可以选择不构建通用应用程序来实现目的。 - Ray Fix
9
尝试使用这种方法导致我们的应用被拒绝,因此这不是一种有效的方法。 - snibbe
我已更新链接。 @sss,如果您能详细说明您做了什么以及如何解决问题,那将非常有趣... - Molotoff
2
很抱歉要说,我们找到的唯一通过应用审核的解决方案是通过删除一些功能和进行一些优化来使我们的应用程序在iPhone 4上运行。 - snibbe
似乎是一个不错的解决方案,但这也将排除 iPad 2 作为兼容设备。 - abdus.me
2
我同意。我也曾因为 plist 中所需的功能未在应用程序中使用而被苹果拒绝了一款应用程序。你必须使用 plist 中所需的功能,或者将它们从要求中删除。仅仅为了限制硬件而向 plist 添加要求将导致你的应用程序被拒绝。 - Flyingkiwi

10

我担心可能是这种情况。我想知道是否有任何API可以使用,以避免应用程序在旧设备上运行? - Zebedee Pedersen
它们可能存在,但它们不会限制用户首先下载它,这真的不推荐,因为设备过旧以至于无法正常运行应用程序是一个大问题。 - Alan MacGregor
1
这绝对是一个问题。对于一些应用程序,特别是那些使用DSP的应用程序来说,不仅仅是“编程更好”的问题,3G/3GS甚至iPhone 4都无法处理那么多的信号数据。 - Zebedee Pedersen

2
您只能在项目设置中限制您的应用程序为 iPhoneiPad,同时也可以在发布到 App Store 时进行限制。
请查看您可以设置类型的位置。
请参见下图:

enter image description here

要限制某些型号,例如 iPhone 4/4s,您应该通过编程获取大小并重定向到某个 ViewController,通知用户您的应用程序不支持此型号。
请参见此处如何获取屏幕大小。
CGSize result = [[UIScreen mainScreen] bounds].size;

switch ((int) result.height) {
    case 480: 
        NSLog(@"iPhone 4 / 4s");
        break;

    case 568: 
        NSLog(@"iPhone 5 / 5c / 5s");
        break;

    case 667:
        NSLog(@"iPhone 6 / 6s"); 
        break;

    case 736: 
        NSLog(@"iPhone 6+ / 6s+");
        break;

    default: 
         NSLog(@"Other screen size, could be an iPad or new device model.");        
         break;
}

需要记住的是,苹果公司希望您的应用程序得到最大可能的支持,而不支持特定型号可能会导致您的应用被拒绝。但是,如果您仅不支持 iPhone 4/4s,那么您很可能会像往常一样发布。首先尝试适应自动布局,只有在不可能时才限制某些设备型号。

我有一个已发布的应用程序,并将其限制为 iPhone 4s。它像往常一样被批准了。


有没有一种方法可以排除iPod?我的意思是,允许用户在iPhone和iPad上安装应用程序,但不允许在iPod上安装... - allo86
你可以在UIRequiredDeviceCapabilities中设置所需的电话功能,甚至限制仅支持arm64的设备。https://developer.apple.com/documentation/bundleresources/information_property_list/uirequireddevicecapabilities - TRVD1707

2

我在调研中发现了以下内容 - 这应该可以帮助您提交并通过苹果的审核,因为这是来自苹果的指南。

设备兼容性

信息属性列表(Info.plist)文件包含有关您的应用程序配置的关键信息,并且必须包含在您的应用程序包中。您在Xcode中创建的每个新项目都有一个默认的Info.plist文件,其中配置了有关您的项目的一些基本信息。您可以修改此文件以指定应用程序的其他配置详细信息。

UIRequiredDeviceCapabilities密钥允许您声明应用程序运行所需的硬件或特定功能。所有应用程序都需要在其Info.plist文件中具有此密钥。应用商店使用此密钥的内容来防止用户将您的应用程序下载到无法运行它的设备上。本章中的表格显示了所有iOS设备及其功能。

希望对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接