如何限制我的应用仅适用于 iPhone 6 和 6 Plus?

Posted

技术标签:

【中文标题】如何限制我的应用仅适用于 iPhone 6 和 6 Plus?【英文标题】:How do I restrict my app for only iPhone 6 and 6 Plus? 【发布时间】:2015-04-16 10:41:58 【问题描述】:

上下文

我正在开发一款目前在 iPad 设备上运行的填字游戏应用。 苹果最近发布了 iPhone 6 和 iPhone 6+ 设备,幸运的是它们有更大的屏幕,因此有资格运行我的游戏(我已经在 iPhone 5S 设备上测试了我的游戏,如果发现用户运行起来不愉快在这样的屏幕尺寸)。

通过这种方式,我决定将我的应用程序迁移到一个通用二进制文件,其中包括对 iPhone 6、iPhone 6 Plus 和 iPad 设备的支持。

问题

    有什么方法可以限制我的 ios 应用只能在 iPhone 6 和 iPhone 6+ 设备上运行?

或者,至少:

    有什么方法可以限制我的 iOS 应用只能在 iPhone 6+ 设备上运行?

【问题讨论】:

没有。见***.com/questions/17903577/…,基本是一样的。 这不完全一样。这两个新设备可能会引入允许我限制它的独立功能。可能与否,这仍然是一个相关问题 - 与您指出的问题不完全相同。 这是同一点。 Apple 不允许您将应用程序限制为特定型号。您可以根据所需的设备功能(例如 M7 芯片或陀螺仪)进行限制。但是您的应用程序必须确实需要这些功能,否则它将被拒绝。想办法支持 3.5" 和 4" 设备或只支持 iPad。 感谢您的帮助。关键是:如果我需要的能力是屏幕分辨率/尺寸怎么办?我看不出与您提到的功能有任何区别,这只是以相同方式将应用程序限制为特定模型的另一层间接性。注意:我不是经验丰富的 android 开发人员,但我已经在 Android 平台上部署了相同的应用程序,并且无论如何我都能够从部署目标中删除“smallScreens”。 Apple 不提供屏幕尺寸作为必需的设备功能。这是关键 - 任何 iPhone 应用程序都必须在 iPad 上按原样运行,这需要支持 3.5" 屏幕才能工作。这就是 iPhone 应用程序必须支持 3.5" 和 4" 屏幕以及可选(可能很快需要)支持的原因适用于 iPhone 6 机型。 【参考方案1】:

我知道这可能为时已晚,而且可能无论如何也无法回答这个问题,但我想“这到底是怎么回事”——这是一段很好的代码来确定设备的范围,以防万一您可能需要不同的功能.

#import <sys/sysctl.h>

-(BOOL)isANewerDevice

    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
    free(machine);

    NSString * ending = [platform substringFromIndex:[platform length]-3];
    double convertedNumber = [[ending stringByReplacingOccurrencesOfString:@"," withString:@"."] doubleValue];

//Devices listed here: https://***.com/questions/19584208/identify-new-iphone-model-on-xcode-5-5c-5s

    if ([platform containsString:@"iPhone"]) 
        if (convertedNumber >= 7.1)  // 6 and above
            return YES;
        else
            return NO; //less than a 6 (ie 5S and below)
        
    else if ([platform containsString:@"iPad"])
        if (convertedNumber >= 5.3)  //iPad Air 2 and above
            return YES;
        else
            return NO; //iPad Mini 3 and below
        
    

    //Failsafe
    return NO;

代码中注释的链接:Identify new iPhone model on xcode (5, 5c, 5s)

注意。由于有containsString,这会在低于8的iOS版本上崩溃。要支持https://***.com/a/26416172/1197723

玩得开心!

【讨论】:

以上是关于如何限制我的应用仅适用于 iPhone 6 和 6 Plus?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的应用程序限制为仅适用于 iPhone [重复]

如何限制 iOS 应用程序仅适用于 iPhone 不包括 iPad?

iOS 6/7 Deltas:仅适用于子视图?

使用 Xcode 9 启动仅适用于 iPhone 的应用程序

支持iPhone 6和iPhone 6+,具有不同的启动/启动屏幕图像,适用于iPad纵向和横向方向

如何在不使用尺寸等级和情节提要的情况下创建适用于 iPhone 4 到 iPhone 6 Plus 的 XIB?