모든 아이폰은 다른 내부 이름이 있습니다
- (void)viewDidLoad {
[super viewDidLoad];
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];
NSLog(@"iPhone Device%@",[self platformType:platform]);
free(machine);
}
- (NSString *) platformType:(NSString *)platform
{
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
을 그리고 방법 아이폰 4, 5, 6은 모두 서로 다른 화면 크기가 :
iPhone 4, 4S: (640, 960)
iPhone 5, 5C, 5S: (640, 1136)
iPhone 6: (750, 1334)
iPhone 6 Plus: (1080, 1920)
당신은이 질문을 참조 할 수 있습니다 : Identify new iPhone model on xcode (5, 5c, 5s)
iPhone 모델을 화면 크기로 감지하는 것은 항상 나쁜 생각입니다. 실제로 iPhone 모델을 감지하는 것은 일반적으로 필요하지 않습니다 (이 경우 어떤 유스 케이스도 모르겠습니다). 어쩌면 [UIDeviceHardware] (https://gist.github.com/Jaybles/1323251)가 도움이 될 수 있습니다. –
@FabioPoloni 일부 회사는이 정보를 사용하여 통계를 수행하고 분석합니다. – KudoCC
@KudoCC 그 경우 : 크기로 iPhone을 감지하는 아이디어는 더욱 심각합니다. –