#include <sys/sysctl.h>
- (NSString *)machineModel {
static dispatch_once_t one;
static NSString *model;
dispatch_once(&one, ^{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
model = [NSString stringWithUTF8String:machine];
free(machine);
});
return model;
}
- (NSString *)machineModelName {
static dispatch_once_t one;
static NSString *name;
dispatch_once(&one, ^{
NSString *model = [self machineModel];
if (!model) return;
NSDictionary *dic = @{
@"Watch1,1" : @"Apple Watch 38mm",
@"Watch1,2" : @"Apple Watch 42mm",
@"Watch2,3" : @"Apple Watch Series 2 38mm",
@"Watch2,4" : @"Apple Watch Series 2 42mm",
@"Watch2,6" : @"Apple Watch Series 1 38mm",
@"Watch2,7" : @"Apple Watch Series 1 42mm",
@"Watch3,1" : @"Apple Watch Series 3 38mm",
@"Watch3,2" : @"Apple Watch Series 3 42mm",
@"Watch3,3" : @"Apple Watch Series 3 38mm",
@"Watch3,4" : @"Apple Watch Series 3 42mm",
@"Watch4,1" : @"Apple Watch Series 4 40mm",
@"Watch4,2" : @"Apple Watch Series 4 44mm",
@"Watch4,3" : @"Apple Watch Series 4 40mm",
@"Watch4,4" : @"Apple Watch Series 4 44mm",
@"Watch5,1" : @"Apple Watch Series 5 40mm",
@"Watch5,2" : @"Apple Watch Series 5 44mm",
@"Watch5,3" : @"Apple Watch Series 5 40mm",
@"Watch5,4" : @"Apple Watch Series 5 44mm",
@"Watch5,9" : @"Apple Watch SE 40mm",
@"Watch5,10" : @"Apple Watch SE 44mm",
@"Watch5,11" : @"Apple Watch SE 40mm",
@"Watch5,12" : @"Apple Watch SE 44mm",
@"Watch6,1" : @"Apple Watch Series 6 40mm",
@"Watch6,2" : @"Apple Watch Series 6 44mm",
@"Watch6,3" : @"Apple Watch Series 6 40mm",
@"Watch6,4" : @"Apple Watch Series 6 44mm",
@"Watch6,6" : @"Apple Watch Series 7 41mm",
@"Watch6,7" : @"Apple Watch Series 7 45mm",
@"Watch6,8" : @"Apple Watch Series 7 41mm",
@"Watch6,9" : @"Apple Watch Series 7 45mm",
@"iPod1,1" : @"iPod touch 1",
@"iPod2,1" : @"iPod touch 2",
@"iPod3,1" : @"iPod touch 3",
@"iPod4,1" : @"iPod touch 4",
@"iPod5,1" : @"iPod touch 5",
@"iPod7,1" : @"iPod touch 6",
@"iPod9,1" : @"iPod touch 7",
@"iPhone1,1" : @"iPhone 1",
@"iPhone1,2" : @"iPhone 3G",
@"iPhone2,1" : @"iPhone 3GS",
@"iPhone3,1" : @"iPhone 4",
@"iPhone3,2" : @"iPhone 4",
@"iPhone3,3" : @"iPhone 4",
@"iPhone4,1" : @"iPhone 4S",
@"iPhone5,1" : @"iPhone 5",
@"iPhone5,2" : @"iPhone 5",
@"iPhone5,3" : @"iPhone 5c",
@"iPhone5,4" : @"iPhone 5c",
@"iPhone6,1" : @"iPhone 5s",
@"iPhone6,2" : @"iPhone 5s",
@"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,2" : @"iPhone 7 Plus",
@"iPhone9,3" : @"iPhone 7",
@"iPhone9,4" : @"iPhone 7 Plus",
@"iPhone10,1" : @"iPhone 8",
@"iPhone10,4" : @"iPhone 8",
@"iPhone10,2" : @"iPhone 8 Plus",
@"iPhone10,5" : @"iPhone 8 Plus",
@"iPhone10,3" : @"iPhone X",
@"iPhone10,6" : @"iPhone X",
@"iPhone11,8" : @"iPhone XR",
@"iPhone11,2" : @"iPhone XS",
@"iPhone11,6" : @"iPhone XS Max",
@"iPhone11,4" : @"iPhone XS Max",
@"iPhone12,1" : @"iPhone 11",
@"iPhone12,3" : @"iPhone 11 Pro",
@"iPhone12,5" : @"iPhone 11 Pro Max",
@"iPhone12,8" : @"iPhone SE 2",
@"iPhone13,1" : @"iPhone 12 mini",
@"iPhone13,2" : @"iPhone 12",
@"iPhone13,3" : @"iPhone 12 Pro",
@"iPhone13,4" : @"iPhone 12 Pro Max",
@"iPhone14,4" : @"iPhone 13 mini",
@"iPhone14,5" : @"iPhone 13",
@"iPhone14,2" : @"iPhone 13 Pro",
@"iPhone14,3" : @"iPhone 13 Pro Max",
@"iPhone14,6" : @"iPhone SE 3",
@"iPad1,1" : @"iPad 1",
@"iPad2,1" : @"iPad 2",
@"iPad2,2" : @"iPad 2",
@"iPad2,3" : @"iPad 2",
@"iPad2,4" : @"iPad 2",
@"iPad3,1" : @"iPad 3",
@"iPad3,2" : @"iPad 3",
@"iPad3,3" : @"iPad 3",
@"iPad3,4" : @"iPad 4",
@"iPad3,5" : @"iPad 4",
@"iPad3,6" : @"iPad 4",
@"iPad6,11" : @"iPad 5",
@"iPad6,12" : @"iPad 5",
@"iPad7,5" : @"iPad 6",
@"iPad7,6" : @"iPad 6",
@"iPad7,11" : @"iPad 7",
@"iPad7,12" : @"iPad 7",
@"iPad11,6" : @"iPad 8",
@"iPad11,7" : @"iPad 8",
@"iPad12,1" : @"iPad 9",
@"iPad12,2" : @"iPad 9",
@"iPad2,5" : @"iPad mini 1",
@"iPad2,6" : @"iPad mini 1",
@"iPad2,7" : @"iPad mini 1",
@"iPad4,4" : @"iPad mini 2",
@"iPad4,5" : @"iPad mini 2",
@"iPad4,6" : @"iPad mini 2",
@"iPad4,7" : @"iPad mini 3",
@"iPad4,8" : @"iPad mini 3",
@"iPad4,9" : @"iPad mini 3",
@"iPad5,1" : @"iPad mini 4",
@"iPad5,2" : @"iPad mini 4",
@"iPad11,1" : @"iPad mini 5",
@"iPad11,2" : @"iPad mini 5",
@"iPad14,1" : @"iPad mini 6",
@"iPad14,2" : @"iPad mini 6",
@"iPad4,1" : @"iPad Air",
@"iPad4,2" : @"iPad Air",
@"iPad4,3" : @"iPad Air",
@"iPad5,3" : @"iPad Air 2",
@"iPad5,4" : @"iPad Air 2",
@"iPad11,3" : @"iPad Air 3",
@"iPad11,4" : @"iPad Air 3",
@"iPad13,1" : @"iPad Air 4",
@"iPad13,2" : @"iPad Air 4",
@"iPad13,16" : @"iPad Air 5",
@"iPad13,17" : @"iPad Air 5",
@"iPad6,3" : @"iPad Pro (9.7 inch)",
@"iPad6,4" : @"iPad Pro (9.7 inch)",
@"iPad6,7" : @"iPad Pro (12.9 inch)",
@"iPad6,8" : @"iPad Pro (12.9 inch)",
@"iPad7,1" : @"iPad Pro 2(12.9-inch)",
@"iPad7,2" : @"iPad Pro 2(12.9-inch)",
@"iPad8,5" : @"iPad Pro 3 (12.9-inch)",
@"iPad8,6" : @"iPad Pro 3 (12.9-inch)",
@"iPad8,7" : @"iPad Pro 3 (12.9-inch)",
@"iPad8,8" : @"iPad Pro 3 (12.9-inch)",
@"iPad8,11" : @"iPad Pro 4 (12.9-inch)",
@"iPad8,12" : @"iPad Pro 4 (12.9-inch)",
@"iPad13,8" : @"iPad Pro 5 (12.9-inch)",
@"iPad13,9" : @"iPad Pro 5 (12.9-inch)",
@"iPad13,10" : @"iPad Pro 5 (12.9-inch)",
@"iPad13,11" : @"iPad Pro 5 (12.9-inch)",
@"iPad7,3" : @"iPad Pro (10.5-inch)",
@"iPad7,4" : @"iPad Pro (10.5-inch)",
@"iPad8,1" : @"iPad Pro (11-inch)",
@"iPad8,2" : @"iPad Pro (11-inch)",
@"iPad8,3" : @"iPad Pro (11-inch)",
@"iPad8,4" : @"iPad Pro (11-inch)",
@"iPad8,9" : @"iPad Pro 2 (11-inch)",
@"iPad8,10" : @"iPad Pro 2 (11-inch)",
@"iPad13,4" : @"iPad Pro 3 (11-inch)",
@"iPad13,5" : @"iPad Pro 3 (11-inch)",
@"iPad13,6" : @"iPad Pro 3 (11-inch)",
@"iPad13,7" : @"iPad Pro 3 (11-inch)",
@"iMac21,1" : @"iMac (24-inch, M1, 2021)",
@"iMac21,2" : @"iMac (24-inch, M1, 2021)",
@"Macmini9,1" : @"Mac mini (M1, 2020)",
@"MacBookAir10,1" : @"MacBook Air (Late 2020)",
@"MacBookPro17,1" : @"MacBook Pro (13-inch, M1, 2020)",
@"MacBookPro18,3" : @"MacBook Pro (14-inch, 2021)",
@"MacBookPro18,4" : @"MacBook Pro (14-inch, 2021)",
@"MacBookPro18,1" : @"MacBook Pro (16-inch, 2021)",
@"MacBookPro18,2" : @"MacBook Pro (16-inch, 2021)",
@"AppleTV1,1" : @"Apple TV 1",
@"AppleTV2,1" : @"Apple TV 2",
@"AppleTV3,1" : @"Apple TV 3",
@"AppleTV3,2" : @"Apple TV 3",
@"AppleTV5,3" : @"Apple TV 4",
@"AppleTV6,2" : @"Apple TV 4K",
@"AppleTV11,1" : @"Apple TV 4K 2",
@"i386" : @"Simulator x86",
@"x86_64" : @"Simulator x64",
@"arm64" : @"Simulator arm64",
};
name = dic[model];
if (!name) name = model;
});
return name;
}