如何在IOS上获得设备的制造和模型?

如何在IOS上获得设备的制造和模型?

我想知道是否有可能确定当前设备是什么类型的iPhone(例如)?我知道这是有可能让模型通过
NSString *deviceType = [[UIDevice currentDevice] model];
它只会返回,无论我有“iPhone”还是“iPod”,但我想知道是否有可能检测/知道我是否有iPhone3GS和iPhone4S(实际上,我真正想做的就是确定我是否有3G,因为我做的是相当图形化的东西).

所以是的,让我知道,谢谢!


开心每一天1111
浏览 805回答 3
3回答

慕勒3428872

我添加了一些故障安全,以支持尚未包括在列表中的未来设备:#import <sys/utsname.h>#import "MyClass.h"@implementation MyClass{     //(your private ivars)}- (NSString*) deviceName{     struct utsname systemInfo;     uname(&systemInfo);     NSString* code = [NSString stringWithCString:systemInfo.machine                                         encoding:NSUTF8StringEncoding];     static NSDictionary* deviceNamesByCode = nil;     if (!deviceNamesByCode) {         deviceNamesByCode = @{@"i386"      : @"Simulator",                               @"x86_64"    : @"Simulator",                               @"iPod1,1"   : @"iPod Touch",        // (Original)                               @"iPod2,1"   : @"iPod Touch",        // (Second Generation)                               @"iPod3,1"   : @"iPod Touch",        // (Third Generation)                               @"iPod4,1"   : @"iPod Touch",        // (Fourth Generation)                               @"iPod7,1"   : @"iPod Touch",        // (6th Generation)                                      @"iPhone1,1" : @"iPhone",            // (Original)                               @"iPhone1,2" : @"iPhone",            // (3G)                               @"iPhone2,1" : @"iPhone",            // (3GS)                               @"iPad1,1"   : @"iPad",              // (Original)                               @"iPad2,1"   : @"iPad 2",            //                               @"iPad3,1"   : @"iPad",              // (3rd Generation)                               @"iPhone3,1" : @"iPhone 4",          // (GSM)                               @"iPhone3,3" : @"iPhone 4",          // (CDMA/Verizon/Sprint)                               @"iPhone4,1" : @"iPhone 4S",         //                               @"iPhone5,1" : @"iPhone 5",          // (model A1428, AT&T/Canada)                               @"iPhone5,2" : @"iPhone 5",          // (model A1429, everything else)                               @"iPad3,4"   : @"iPad",              // (4th Generation)                               @"iPad2,5"   : @"iPad Mini",         // (Original)                               @"iPhone5,3" : @"iPhone 5c",         // (model A1456, A1532 | GSM)                               @"iPhone5,4" : @"iPhone 5c",         // (model A1507, A1516, A1526 (China), A1529 | Global)                               @"iPhone6,1" : @"iPhone 5s",         // (model A1433, A1533 | GSM)                               @"iPhone6,2" : @"iPhone 5s",         // (model A1457, A1518, A1528 (China), A1530 | Global)                               @"iPhone7,1" : @"iPhone 6 Plus",     //                               @"iPhone7,2" : @"iPhone 6",          //                               @"iPhone8,1" : @"iPhone 6S",         //                               @"iPhone8,2" : @"iPhone 6S Plus",    //                               @"iPhone8,4" : @"iPhone SE",         //                               @"iPhone9,1" : @"iPhone 7",          //                               @"iPhone9,3" : @"iPhone 7",          //                               @"iPhone9,2" : @"iPhone 7 Plus",     //                               @"iPhone9,4" : @"iPhone 7 Plus",     //                               @"iPhone10,1": @"iPhone 8",          // CDMA                               @"iPhone10,4": @"iPhone 8",          // GSM                               @"iPhone10,2": @"iPhone 8 Plus",     // CDMA                               @"iPhone10,5": @"iPhone 8 Plus",     // GSM                               @"iPhone10,3": @"iPhone X",          // CDMA                               @"iPhone10,6": @"iPhone X",          // GSM                               @"iPhone11,2": @"iPhone XS",         //                               @"iPhone11,4": @"iPhone XS Max",     //                               @"iPhone11,6": @"iPhone XS Max",     // China                               @"iPhone11,8": @"iPhone XR",         //                               @"iPad4,1"   : @"iPad Air",          // 5th Generation iPad (iPad Air) - Wifi                               @"iPad4,2"   : @"iPad Air",          // 5th Generation iPad (iPad Air) - Cellular                               @"iPad4,4"   : @"iPad Mini",         // (2nd Generation iPad Mini - Wifi)                               @"iPad4,5"   : @"iPad Mini",         // (2nd Generation iPad Mini - Cellular)                               @"iPad4,7"   : @"iPad Mini",         // (3rd Generation iPad Mini - Wifi (model A1599))                               @"iPad6,7"   : @"iPad Pro (12.9\")", // iPad Pro 12.9 inches - (model A1584)                                @"iPad6,8"   : @"iPad Pro (12.9\")", // iPad Pro 12.9 inches - (model A1652)                                @"iPad6,3"   : @"iPad Pro (9.7\")",  // iPad Pro 9.7 inches - (model A1673)                               @"iPad6,4"   : @"iPad Pro (9.7\")"   // iPad Pro 9.7 inches - (models A1674 and A1675)                               };     }     NSString* deviceName = [deviceNamesByCode objectForKey:code];     if (!deviceName) {         // Not found on database. At least guess main device type from string contents:         if ([code rangeOfString:@"iPod"].location != NSNotFound) {             deviceName = @"iPod Touch";         }         else if([code rangeOfString:@"iPad"].location != NSNotFound) {             deviceName = @"iPad";         }         else if([code rangeOfString:@"iPhone"].location != NSNotFound){             deviceName = @"iPhone";         }         else {             deviceName = @"Unknown";         }     }     return deviceName;}// (rest of class implementation omitted)@end我还省略了详细的信息(例如“A 1507,A 1516,A 1526(中国),A 1529_Global”),并将其放在注释中,以防您想将其用作面向用户的字符串,而不是吓到它们。
打开App,查看更多内容
随时随地看视频慕课网APP