Tôi có mã theo dõi để phát hiện Thiết bị iOS.Kiểm tra loại và phiên bản iOS Simulator
NSString * platformNSString() {
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithUTF8String:machine];
free(machine);
return platform;
}
NSString * platformString() {
NSString *platform = platformNSString();
// iphones
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (CDMA)";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (UK+Europe+Asis+China)";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (UK+Europe+Asis+China)";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 Plus";
// ipods
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch (1 Gen)";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch (2 Gen)";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch (3 Gen)";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch (4 Gen)";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";
// ipads
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad1,2"]) return @"iPad 3G";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini";
if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";
if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini Retina (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina (GSM+CDMA)";
// iPad5,3
// simulators
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"ppc"] || [platform isEqualToString:@"ppc64"]) {
}
else return @"Unknown";
return platform;
}
Tôi cũng mong muốn có danh sách Trình mô phỏng iOS là gì?
Xem hình ảnh sau đây.
Nói tóm lại, tôi cũng muốn có phát hiện loại mô phỏng với những gì phiên bản iOS đang được sử dụng thời gian chạy như chúng tôi phát hiện các thiết bị.
Đây là khối mã cho biết nỗ lực của tôi giống nhau.
// simulators
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"ppc"] || [platform isEqualToString:@"ppc64"]) {
CGSize size = [[UIScreen mainScreen] bounds].size;
CGFloat simulatorHeight = (size.height>size.width)?size.height:size.width;
if(simulatorHeight>=2048) {
return @"Retina iPad Simulator";
} else if(simulatorHeight>=1920) {
return @"Retina iPhone 6+ Simulator";
} else if(simulatorHeight>=1334) {
return @"Retina iPhone 6 Simulator";
} else if(simulatorHeight>=1136) {
return @"Retina iPhone 5/5S/5C Simulator";
} else if(simulatorHeight>=960) {
return @"Retina iPhone 4/4S Simulator";
} else if(simulatorHeight>=480) {
return @"Retina iPhone 4/4S Simulator";
}
}
Là nhà phát triển, bạn không cần thực hiện bất kỳ quyết định nào dựa trên thông tin đó. Vui lòng giải thích lý do bạn cần thông tin này và tôi sẽ giúp bạn tìm ra giải pháp thay thế tốt hơn. –
Vâng. Tôi không thể có tất cả các thiết bị cùng một lúc như iPhone6, iPhone6 +, iPad Air2, iPadAir, iPadMini3 vv Đôi khi, chúng tôi đã tích hợp mã thiết bị cụ thể. Nhưng nó trở nên khó khăn để kiểm tra những mã cụ thể trên mô phỏng. –
Quan điểm của tôi là bạn không cần phải biết những số nhận dạng này. Bạn không nên đưa ra bất kỳ quyết định nào trong ứng dụng của mình dựa trên các số nhận dạng này. Bạn nên đưa ra quyết định dựa trên các tiêu chí KHÁC, chứ không phải định danh phần cứng. –