-1

我正在开发一个只能安装在 iPhone 4 和更高版本中的应用程序。我还通过UIRequiredDeviceCapabilities 和设备兼容性矩阵。我需要更多解决方案。

4

1 回答 1

2

好吧,首先您可以使用UIDevice该类将模型作为字符串接收:

[[UIDevice currentDevice] model]

这将返回类似“iPod touch”或“iPhone”的内容。

您可以使用以下代码获得确切的模型平台:(
您必须#include <sys/types.h><sys/sysctl.h>

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

现在platform是一个包含设备生成的字符串,例如:

  • iPhone1,1适用于iPhone 2G(第一款 iPhone)
  • iPhone1,2适用于iPhone 3G
  • iPhone2,1适用于iPhone 3GS
  • iPhone3,1iPhone3,2iPhone 4
  • iPhone4,1适用于iPhone 4S
  • iPhone5,1iPhone5,2iPhone 5

注意,iPhone 4 平台的逗号前面的数字实际上是3,而不是 4。使用这个字符串可以隔离这个数字,并检查它是否大于等于 3:

if ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"]) {
    if ([[[platform componentsSeparatedByString:@","][0] substringFromIndex:6] intValue] >= 3) {
        // Device is iPhone 4 or newer
    } else {
        // Device is older than iPhone 4
    }
}

但是:您实际上可以检查屏幕的比例,因为 iPhone 4 是第一款配备 Retina 显示屏的 iPhone:

[[UIScreen mainScreen] scale]  // Returns 2.0f on the iPhone 4 and newer and 1.0f on older devices
于 2013-04-01T14:05:12.730 回答