识别iphone的版本

时间:2013-04-01 11:49:13

标签: iphone ios objective-c ipad ios5

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

1 个答案:

答案 0 :(得分: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,2用于 iPhone 4
  • iPhone4,1用于 iPhone 4S
  • iPhone5,1iPhone5,2用于 iPhone 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是第一款带有视网膜显示屏的iPhone:

[[UIScreen mainScreen] scale]  // Returns 2.0f on the iPhone 4 and newer and 1.0f on older devices