Van egy módja annak, hogy meghatározzák az eszköz egy alkalmazás futtatása. Azt akarom, hogy különbséget iPhoneés iPod Touch, ha lehetséges.
Határozza eszköz (iPhone, iPod Touch) az iPhone SDK
Használhatja a UIDeviceosztály, mint ez:
NSString *deviceType = [UIDevice currentDevice].model;
if([deviceType isEqualToString:@"iPhone"])
// it's an iPhone
Ez egy frissítést UIDeviceHardware.ma választ a fenti kérdésre .
- (NSString *)platformString
{
NSString *platform = [self platform];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
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,3"]) return @"Verizon iPhone 4";
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,1"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPod7,1"]) return @"iPod Touch 6G";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)";
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 (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
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 (Cellular)";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad mini 2G (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)";
if ([platform isEqualToString:@"iPad5,1"]) return @"iPad mini 4 (WiFi)";
if ([platform isEqualToString:@"iPad5,2"]) return @"iPad mini 4 (Cellular)";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
if ([platform isEqualToString:@"iPad6,3"]) return @"iPad Pro 9.7 inch (WiFi)";
if ([platform isEqualToString:@"iPad6,4"]) return @"iPad Pro 9.7 inch (Cellular)";
if ([platform isEqualToString:@"iPad6,7"]) return @"iPad Pro 12.9 inch (WiFi)";
if ([platform isEqualToString:@"iPad6,8"]) return @"iPad Pro 12.9 inch (Cellular)";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
Kérjük, bátran használja ezt a class ( GIST @ GitHub )
KÓD eltávolítjuk, és átköltözött
UPDATE (01/14/11)
Nyilvánvaló, hogy ez a kód egy kicsit elavult már, de ez természetesen frissíthető a kódot erre az üzenetre által nyújtott Brian Robbinsamely hasonló kódot frissített modellek. Köszönjük a támogatást erre az üzenetre.
Én ezt az én kb. Naprakész 2012 decemberében.
- (NSString *) platformString {
// Gets a string with the device model
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];
free(machine);
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:@"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)";
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:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
if([UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad) {
//Device is ipad
}else{
//Device is iphone
}
Legutóbbi frissítés - szeptember 2017 Hozzáadott iPhone X , iPhone 8 , iPhone 8 Plus , az Apple Watch Series 3 , Apple TV 4K
Előző frissítés - június 2017: Hozzáadott iPad Pro 10,5" iPad Pro 12,9" 2. gen
Gyors
(Tesztelt Swift 4, Swift 3)
Az alábbi függvény visszaad egy karakterláncot a jelenlegi eszköz nevét.
func userDeviceName() -> String {
let platform: String = {
var size = 0
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](repeating: 0, count: Int(size))
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String(cString: machine)
}()
//iPhone
if platform == "iPhone1,1" { return "iPhone (1st generation)" }
else if platform == "iPhone1,2" { return "iPhone 3G" }
else if platform == "iPhone2,1" { return "iPhone 3GS" }
else if platform == "iPhone3,1" { return "iPhone 4 (GSM)" }
else if platform == "iPhone3,2" { return "iPhone 4 (GSM, 2nd revision)" }
else if platform == "iPhone3,3" { return "iPhone 4 (CDMA)" }
else if platform == "iPhone4,1" { return "iPhone 4S" }
else if platform == "iPhone5,1" { return "iPhone 5 (GSM)" }
else if platform == "iPhone5,2" { return "iPhone 5 (GSM+CDMA)" }
else if platform == "iPhone5,3" { return "iPhone 5c (GSM)" }
else if platform == "iPhone5,4" { return "iPhone 5c (GSM+CDMA)" }
else if platform == "iPhone6,1" { return "iPhone 5s (GSM)" }
else if platform == "iPhone6,2" { return "iPhone 5s (GSM+CDMA)" }
else if platform == "iPhone7,2" { return "iPhone 6" }
else if platform == "iPhone7,1" { return "iPhone 6 Plus" }
else if platform == "iPhone8,1" { return "iPhone 6s" }
else if platform == "iPhone8,2" { return "iPhone 6s Plus" }
else if platform == "iPhone8,4" { return "iPhone SE" }
else if platform == "iPhone9,1" { return "iPhone 7 (GSM+CDMA)" }
else if platform == "iPhone9,3" { return "iPhone 7 (GSM)" }
else if platform == "iPhone9,2" { return "iPhone 7 Plus (GSM+CDMA)" }
else if platform == "iPhone9,4" { return "iPhone 7 Plus (GSM)" }
else if platform == "iPhone10,1" { return "iPhone 8 (GSM+CDMA)" }
else if platform == "iPhone10,4" { return "iPhone 8 (GSM)" }
else if platform == "iPhone10,2" { return "iPhone 8 Plus (GSM+CDMA)" }
else if platform == "iPhone10,5" { return "iPhone 8 Plus (GSM)" }
else if platform == "iPhone10,3" { return "iPhone X (GSM+CDMA)" }
else if platform == "iPhone10,6" { return "iPhone X (GSM)" }
//iPod Touch
else if platform == "iPod1,1" { return "iPod Touch 1G" }
else if platform == "iPod2,1" { return "iPod Touch 2G" }
else if platform == "iPod3,1" { return "iPod Touch 3G" }
else if platform == "iPod4,1" { return "iPod Touch 4G" }
else if platform == "iPod5,1" { return "iPod Touch 5G" }
else if platform == "iPod7,1" { return "iPod Touch 6G" }
//iPad
else if platform == "iPad1,1" { return "iPad (1st generation)" }
else if platform == "iPad2,1" { return "iPad 2 (Wi-Fi)" }
else if platform == "iPad2,2" { return "iPad 2 (GSM)" }
else if platform == "iPad2,3" { return "iPad 2 (CDMA)" }
else if platform == "iPad2,4" { return "iPad 2 (Wi-Fi, Mid 2012)" }
else if platform == "iPad3,1" { return "iPad (3rd generation) (Wi-Fi)" }
else if platform == "iPad3,2" { return "iPad (3rd generation) (GSM+CDMA)" }
else if platform == "iPad3,3" { return "iPad (3rd generation) (GSM)" }
else if platform == "iPad3,4" { return "iPad (4th generation) (Wi-Fi)"}
else if platform == "iPad3,5" { return "iPad (4th generation) (GSM)" }
else if platform == "iPad3,6" { return "iPad (4th generation) (GSM+CDMA)" }
else if platform == "iPad6,11" { return "iPad (5th generation) (Wi-Fi)" }
else if platform == "iPad6,12" { return "iPad (5th generation) (Cellular)" }
//iPad Mini
else if platform == "iPad2,5" { return "iPad Mini (Wi-Fi)" }
else if platform == "iPad2,6" { return "iPad Mini (GSM)" }
else if platform == "iPad2,7" { return "iPad Mini (GSM+CDMA)" }
else if platform == "iPad4,4" { return "iPad Mini 2 (Wi-Fi)" }
else if platform == "iPad4,5" { return "iPad Mini 2 (Cellular)" }
else if platform == "iPad4,6" { return "iPad Mini 2 (China)" }
else if platform == "iPad4,7" { return "iPad Mini 3 (Wi-Fi)" }
else if platform == "iPad4,8" { return "iPad Mini 3 (Cellular)" }
else if platform == "iPad4,9" { return "iPad Mini 3 (China)" }
else if platform == "iPad5,1" { return "iPad Mini 4 (Wi-Fi)" }
else if platform == "iPad5,2" { return "iPad Mini 4 (Cellular)" }
//iPad Air
else if platform == "iPad4,1" { return "iPad Air (Wi-Fi)" }
else if platform == "iPad4,2" { return "iPad Air (Cellular)" }
else if platform == "iPad4,3" { return "iPad Air (China)" }
else if platform == "iPad5,3" { return "iPad Air 2 (Wi-Fi)" }
else if platform == "iPad5,4" { return "iPad Air 2 (Cellular)" }
//iPad Pro
else if platform == "iPad6,3" { return "iPad Pro 9.7\" (Wi-Fi)" }
else if platform == "iPad6,4" { return "iPad Pro 9.7\" (Cellular)" }
else if platform == "iPad6,7" { return "iPad Pro 12.9\" (Wi-Fi)" }
else if platform == "iPad6,8" { return "iPad Pro 12.9\" (Cellular)" }
else if platform == "iPad7,1" { return "iPad Pro 12.9\" (2nd generation) (Wi-Fi)" }
else if platform == "iPad7,2" { return "iPad Pro 12.9\" (2nd generation) (Cellular)" }
else if platform == "iPad7,3" { return "iPad Pro 10.5\" (Wi-Fi)" }
else if platform == "iPad7,4" { return "iPad Pro 10.5\" (Cellular)" }
//Apple TV
else if platform == "AppleTV2,1" { return "Apple TV 2G" }
else if platform == "AppleTV3,1" { return "Apple TV 3" }
else if platform == "AppleTV3,2" { return "Apple TV 3 (2013)" }
else if platform == "AppleTV5,3" { return "Apple TV 4" }
else if platform == "AppleTV6,2" { return "Apple TV 4K" }
//Apple Watch
else if platform == "Watch1,1" { return "Apple Watch (1st generation) (38mm)" }
else if platform == "Watch1,2" { return "Apple Watch (1st generation) (42mm)" }
else if platform == "Watch2,6" { return "Apple Watch Series 1 (38mm)" }
else if platform == "Watch2,7" { return "Apple Watch Series 1 (42mm)" }
else if platform == "Watch2,3" { return "Apple Watch Series 2 (38mm)" }
else if platform == "Watch2,4" { return "Apple Watch Series 2 (42mm)" }
else if platform == "Watch3,1" { return "Apple Watch Series 3 (38mm Cellular)" }
else if platform == "Watch3,2" { return "Apple Watch Series 3 (42mm Cellular)" }
else if platform == "Watch3,3" { return "Apple Watch Series 3 (38mm)" }
else if platform == "Watch3,4" { return "Apple Watch Series 3 (42mm)" }
//Simulator
else if platform == "i386" { return "Simulator" }
else if platform == "x86_64" { return "Simulator"}
return platform
}
Meg lehet próbálni a következő kódot:
print("Current device is: ", self.userDeviceName())
Objective-C
Azt is hozzátette, az új eszközöket a Objective-C kódot
Ne felejtsük el , hogy a behozatali sys / sysctl.h
#import <sys/sysctl.h>
- (NSString *) userDeviceName {
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];
free(machine);
//iPhone
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone (1st generation)";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (GSM)";
if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (GSM, 2nd revision)";
if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (Verizon)";
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:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7 (GSM)";
if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus (GSM)";
if ([platform isEqualToString:@"iPhone10,1"]) return @"iPhone 8 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone10,4"]) return @"iPhone 8 (GSM)";
if ([platform isEqualToString:@"iPhone10,2"]) return @"iPhone 8 Plus (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone10,5"]) return @"iPhone 8 Plus (GSM)";
if ([platform isEqualToString:@"iPhone10,3"]) return @"iPhone X (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone10,6"]) return @"iPhone X (GSM)";
//iPod Touch
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPod7,1"]) return @"iPod Touch 6G";
//iPad
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad (1st generation)";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (Wi-Fi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (Wi-Fi, Mid 2012)";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (Wi-Fi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)";
if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,1"]) return @"iPad (3rd generation) (Wi-Fi)";
if ([platform isEqualToString:@"iPad3,2"]) return @"iPad (3rd generation) (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,3"]) return @"iPad (3rd generation) (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad (4th generation) (Wi-Fi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad (4th generation) (GSM)";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad (4th generation) (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (Wi-Fi)";
if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";
if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air (China)";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2 (Wi-Fi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2 (Cellular)";
if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2 (China)";
if ([platform isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 (Wi-Fi)";
if ([platform isEqualToString:@"iPad4,8"]) return @"iPad Mini 3 (Cellular)";
if ([platform isEqualToString:@"iPad4,9"]) return @"iPad Mini 3 (China)";
if ([platform isEqualToString:@"iPad5,1"]) return @"iPad Mini 4 (Wi-Fi)";
if ([platform isEqualToString:@"iPad5,2"]) return @"iPad Mini 4 (Cellular)";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (Wi-Fi)";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
if ([platform isEqualToString:@"iPad6,3"]) return @"iPad Pro 9.7\" (Wi-Fi)";
if ([platform isEqualToString:@"iPad6,4"]) return @"iPad Pro 9.7\" (Cellular)";
if ([platform isEqualToString:@"iPad6,7"]) return @"iPad Pro 12.9\" (Wi-Fi)";
if ([platform isEqualToString:@"iPad6,8"]) return @"iPad Pro 12.9\" (Cellular)";
if ([platform isEqualToString:@"iPad6,11"]) return @"iPad (5th generation) (Wi-Fi)";
if ([platform isEqualToString:@"iPad6,12"]) return @"iPad (5th generation) (Cellular)";
if ([platform isEqualToString:@"iPad7,1"]) return @"iPad Pro 12.9\" (2nd generation) (Wi-Fi)";
if ([platform isEqualToString:@"iPad7,2"]) return @"iPad Pro 12.9\" (2nd generation) (Cellular)";
if ([platform isEqualToString:@"iPad7,3"]) return @"iPad Pro 10.5\" (Wi-Fi)";
if ([platform isEqualToString:@"iPad7,4"]) return @"iPad Pro 10.5\" (Cellular)";
//Apple TV
if ([platform isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
if ([platform isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3";
if ([platform isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3 (2013)";
if ([platform isEqualToString:@"AppleTV5,3"]) return @"Apple TV 4";
if ([platform isEqualToString:@"AppleTV6,2"]) return @"Apple TV 4K";
//Apple Watch
if ([platform isEqualToString:@"Watch1,1"]) return @"Apple Watch (1st generation) (38mm)";
if ([platform isEqualToString:@"Watch1,2"]) return @"Apple Watch (1st generation) (42mm)";
if ([platform isEqualToString:@"Watch2,6"]) return @"Apple Watch Series 1 (38mm)";
if ([platform isEqualToString:@"Watch2,7"]) return @"Apple Watch Series 1 (42mm)";
if ([platform isEqualToString:@"Watch2,3"]) return @"Apple Watch Series 2 (38mm)";
if ([platform isEqualToString:@"Watch2,4"]) return @"Apple Watch Series 2 (42mm)";
if ([platform isEqualToString:@"Watch3,1"]) return @"Apple Watch Series 3 (38mm Cellular)";
if ([platform isEqualToString:@"Watch3,2"]) return @"Apple Watch Series 3 (42mm Cellular)";
if ([platform isEqualToString:@"Watch3,3"]) return @"Apple Watch Series 3 (38mm)";
if ([platform isEqualToString:@"Watch3,4"]) return @"Apple Watch Series 3 (42mm)";
//Simulator
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
Meg lehet próbálni a következő kódot:
NSLog(@"Current device is: %@", [self userDeviceName]);
Frissítve platform húrok iPad Air 2és iPad mini 3:
- (NSString *)platformString
{
NSString *platform = [self platform];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
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,3"]) return @"Verizon iPhone 4";
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,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)";
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 (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
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 (Cellular)";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad mini 2G (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)";
if ([platform isEqualToString:@"iPad4,7"]) return @"iPad mini 3 (WiFi)";
if ([platform isEqualToString:@"iPad4,8"]) return @"iPad mini 3 (Cellular)";
if ([platform isEqualToString:@"iPad4,9"]) return @"iPad mini 3 (China Model)";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
if ([platform isEqualToString:@"iPad6,8"]) return @"iPad Pro";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
További hasznos
#include <sys/types.h>
#include <sys/sysctl.h>
@interface UIDevice(Hardware)
- (NSString *) platform;
- (BOOL)hasRetinaDisplay;
- (BOOL)hasMultitasking;
- (BOOL)hasCamera;
@end
@implementation UIDevice(Hardware)
- (NSString *) platform{
int mib[2];
size_t len;
char *machine;
mib[0] = CTL_HW;
mib[1] = HW_MACHINE;
sysctl(mib, 2, NULL, &len, NULL, 0);
machine = malloc(len);
sysctl(mib, 2, machine, &len, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
free(machine);
return platform;
}
- (BOOL)hasRetinaDisplay {
NSString *platform = [self platform];
BOOL ret = YES;
if ([platform isEqualToString:@"iPhone1,1"]) {
ret = NO;
}
else
if ([platform isEqualToString:@"iPhone1,2"]) ret = NO;
else
if ([platform isEqualToString:@"iPhone2,1"]) ret = NO;
else
if ([platform isEqualToString:@"iPod1,1"]) ret = NO;
else
if ([platform isEqualToString:@"iPod2,1"]) ret = NO;
else
if ([platform isEqualToString:@"iPod3,1"]) ret = NO;
return ret;
}
- (BOOL)hasMultitasking {
if ([self respondsToSelector:@selector(isMultitaskingSupported)]) {
return [self isMultitaskingSupported];
}
return NO;
}
- (BOOL)hasCamera {
BOOL ret = NO;
// check camera availability
return ret;
}
@end
akkor olvasási tulajdonságok
NSLog(@"platform %@, retita %@, multitasking %@", [[UIDevice currentDevice] platform], [[UIDevice currentDevice] hasRetinaDisplay] ? @"YES" : @"NO" , [[UIDevice currentDevice] hasMultitasking] ? @"YES" : @"NO");
Tudom a választ rovatot már, de a jövőben is, akkor is mindig használja a készüléket képernyőméret kitalálni, hogy melyik készülék van így:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
CGSize result = [[UIScreen mainScreen] bounds].size;
if (result.height == 480) {
// 3.5 inch display - iPhone 4S and below
NSLog(@"Device is an iPhone 4S or below");
}
else if (result.height == 568) {
// 4 inch display - iPhone 5
NSLog(@"Device is an iPhone 5/S/C");
}
else if (result.height == 667) {
// 4.7 inch display - iPhone 6
NSLog(@"Device is an iPhone 6");
}
else if (result.height == 736) {
// 5.5 inch display - iPhone 6 Plus
NSLog(@"Device is an iPhone 6 Plus");
}
}
else if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
// iPad 9.7 or 7.9 inch display.
NSLog(@"Device is an iPad.");
}
Itt egy kisebb frissítést, új modellek:
- (NSString *) platformString{
NSString *platform = [self platform];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
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:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator";
return platform;
}
Csak hozzá az iPhone 4S készülék kódját a témára ...
Az iPhone 4S visszatér a húr @ „iPhone4,1”.
Hozzátéve, hogy Arash kódját, nem érdekel az én app, hogy milyen modell általam használt, csak azt akarom tudni, hogy milyen eszköz, így tudom tesztelni az alábbiak szerint:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
NSLog(@"I'm definitely an iPad");
} else {
NSString *deviceType = [UIDevice currentDevice].model;
if([deviceType rangeOfString:@"iPhone"].location!=NSNotFound)
{
NSLog(@"I must be an iPhone");
} else {
NSLog(@"I think I'm an iPod");
}
}
Hogy ezt a kódot, ha új verziója, akkor azonosítót az utolsó ismert eszköz
- (NSString *)getModel {
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *model = malloc(size);
sysctlbyname("hw.machine", model, &size, NULL, 0);
NSString *sDeviceModel = [NSString stringWithCString:model encoding:NSUTF8StringEncoding];
free(model);
if ([sDeviceModel isEqual:@"i386"]) return @"Simulator"; //iPhone Simulator
if ([sDeviceModel isEqual:@"iPhone1,1"]) return @"iPhone1G"; //iPhone 1G
if ([sDeviceModel isEqual:@"iPhone1,2"]) return @"iPhone3G"; //iPhone 3G
if ([sDeviceModel isEqual:@"iPhone2,1"]) return @"iPhone3GS"; //iPhone 3GS
if ([sDeviceModel isEqual:@"iPhone3,1"]) return @"iPhone3GS"; //iPhone 4 - AT&T
if ([sDeviceModel isEqual:@"iPhone3,2"]) return @"iPhone3GS"; //iPhone 4 - Other carrier
if ([sDeviceModel isEqual:@"iPhone3,3"]) return @"iPhone4"; //iPhone 4 - Other carrier
if ([sDeviceModel isEqual:@"iPhone4,1"]) return @"iPhone4S"; //iPhone 4S
if ([sDeviceModel isEqual:@"iPod1,1"]) return @"iPod1stGen"; //iPod Touch 1G
if ([sDeviceModel isEqual:@"iPod2,1"]) return @"iPod2ndGen"; //iPod Touch 2G
if ([sDeviceModel isEqual:@"iPod3,1"]) return @"iPod3rdGen"; //iPod Touch 3G
if ([sDeviceModel isEqual:@"iPod4,1"]) return @"iPod4thGen"; //iPod Touch 4G
if ([sDeviceModel isEqual:@"iPad1,1"]) return @"iPadWiFi"; //iPad Wifi
if ([sDeviceModel isEqual:@"iPad1,2"]) return @"iPad3G"; //iPad 3G
if ([sDeviceModel isEqual:@"iPad2,1"]) return @"iPad2"; //iPad 2 (WiFi)
if ([sDeviceModel isEqual:@"iPad2,2"]) return @"iPad2"; //iPad 2 (GSM)
if ([sDeviceModel isEqual:@"iPad2,3"]) return @"iPad2"; //iPad 2 (CDMA)
NSString *aux = [[sDeviceModel componentsSeparatedByString:@","] objectAtIndex:0];
//If a newer version exist
if ([aux rangeOfString:@"iPhone"].location!=NSNotFound) {
int version = [[aux stringByReplacingOccurrencesOfString:@"iPhone" withString:@""] intValue];
if (version == 3) return @"iPhone4"
if (version >= 4) return @"iPhone4s";
}
if ([aux rangeOfString:@"iPod"].location!=NSNotFound) {
int version = [[aux stringByReplacingOccurrencesOfString:@"iPod" withString:@""] intValue];
if (version >=4) return @"iPod4thGen";
}
if ([aux rangeOfString:@"iPad"].location!=NSNotFound) {
int version = [[aux stringByReplacingOccurrencesOfString:@"iPad" withString:@""] intValue];
if (version ==1) return @"iPad3G";
if (version >=2) return @"iPad2";
}
//If none was found, send the original string
return sDeviceModel;
}
Van egy szép érett könyvtár (általam) számára, hogy a nevezett SDVersion . Meg tudja nézni a futó eszköz modellje, a képernyő mérete és még sok más paramétereket. Ugyancsak támogatja OSX.
Példa:
// Check for device model
if ([SDVersion deviceVersion] == iPhone6)
NSLog(@"You got the iPhone 6. Sweet !");
else if ([SDVersion deviceVersion] == iPhone6Plus)
NSLog(@"iPhone 6 Plus? Bigger is better!");
else if ([SDVersion deviceVersion] == iPadAir2)
NSLog(@"You own an iPad Air 2 !");
// Check for device screen size
if ([SDVersion deviceSize] == Screen4inch)
NSLog(@"Your screen is 4 inches");
Alapul nagyon jó választ a fenti, itt van, amit én találtam ki. Ez nagyon hasonlít a @ Rodrigo választ, de címeket @ Oliver aggodalmát a megjegyzést, hogy a választ. Ez egyben annak a lehetőségnek, a modell húr a kimeneti karakterlánc.
+ (NSString *) deviceModel {
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *model = malloc(size);
sysctlbyname("hw.machine", model, &size, NULL, 0);
NSString *deviceModel = [NSString stringWithCString:model encoding:NSUTF8StringEncoding];
free(model);
return deviceModel;
}
+ (NSString *) deviceName {
NSString *deviceModel = [DeviceGateway deviceModel];
if ([deviceModel isEqual:@"i386"]) return @"Simulator"; //iPhone Simulator
if ([deviceModel isEqual:@"iPhone1,1"]) return @"iPhone1G"; //iPhone 1G
if ([deviceModel isEqual:@"iPhone1,2"]) return @"iPhone3G"; //iPhone 3G
if ([deviceModel isEqual:@"iPhone2,1"]) return @"iPhone3GS"; //iPhone 3GS
if ([deviceModel isEqual:@"iPhone3,1"]) return @"iPhone4"; //iPhone 4 - AT&T
if ([deviceModel isEqual:@"iPhone3,2"]) return @"iPhone4"; //iPhone 4 - Other carrier
if ([deviceModel isEqual:@"iPhone3,3"]) return @"iPhone4"; //iPhone 4 - Other carrier
if ([deviceModel isEqual:@"iPhone4,1"]) return @"iPhone4S"; //iPhone 4S
if ([deviceModel isEqual:@"iPod1,1"]) return @"iPod1stGen"; //iPod Touch 1G
if ([deviceModel isEqual:@"iPod2,1"]) return @"iPod2ndGen"; //iPod Touch 2G
if ([deviceModel isEqual:@"iPod3,1"]) return @"iPod3rdGen"; //iPod Touch 3G
if ([deviceModel isEqual:@"iPod4,1"]) return @"iPod4thGen"; //iPod Touch 4G
if ([deviceModel isEqual:@"iPad1,1"]) return @"iPadWiFi"; //iPad Wifi
if ([deviceModel isEqual:@"iPad1,2"]) return @"iPad3G"; //iPad 3G
if ([deviceModel isEqual:@"iPad2,1"]) return @"iPad2"; //iPad 2 (WiFi)
if ([deviceModel isEqual:@"iPad2,2"]) return @"iPad2"; //iPad 2 (GSM)
if ([deviceModel isEqual:@"iPad2,3"]) return @"iPad2"; //iPad 2 (CDMA)
NSString *aux = [[deviceModel componentsSeparatedByString:@","] objectAtIndex:0];
//If a newer version exists
if ([aux rangeOfString:@"iPhone"].location != NSNotFound) {
int version = [[aux stringByReplacingOccurrencesOfString:@"iPhone" withString:@""] intValue];
if (version == 3) return @"iPhone4";
if (version == 4) return @"iPhone4s";
return @"Newer iPhone";
}
if ([aux rangeOfString:@"iPod"].location != NSNotFound) {
int version = [[aux stringByReplacingOccurrencesOfString:@"iPod" withString:@""] intValue];
if (version == 4) return @"iPod4thGen";
return @"Newer iPod";
}
if ([aux rangeOfString:@"iPad"].location != NSNotFound) {
int version = [[aux stringByReplacingOccurrencesOfString:@"iPad" withString:@""] intValue];
if (version == 1) return @"iPad3G";
if (version == 2) return @"iPad2";
return @"Newer iPad";
}
//If none was found, send the original string
return deviceModel;
}
+ (NSString *) deviceNameWithDeviceModel:(BOOL)shouldIncludeDeviceModel {
if (shouldIncludeDeviceModel) {
return [NSString stringWithFormat:@"%@ (%@)", [DeviceGateway deviceName], [DeviceGateway deviceModel]];
}
return [DeviceGateway deviceName];
}
#import <sys/utsname.h>
NSString *iPhone = [self iPhoneVersion];
-(NSString*)iPhoneVersion
{
NSString *platform;
struct utsname systemInfo;
uname(&systemInfo);
platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
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,3"]) return @"VerizoniPhone 4";
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:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)";
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 (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
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 (Cellular)";
if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G (Cellular)";
if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G";
if ([platform isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 (WiFi)";
if ([platform isEqualToString:@"iPad4,8"]) return @"iPad Mini 3 (Cellular)";
if ([platform isEqualToString:@"iPad4,9"]) return @"iPad Mini 3 (China)";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
if ([platform isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
if ([platform isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3";
if ([platform isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3 (2013)";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
NSString *deviceType = [UIDevice currentDevice].model;
Az alábbiakban említett kódrészlet segít:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
// iPhone device
}
else if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
// iPad device
}
else {
// Other device i.e. iPod
}
Vettem egy kicsit tovább, és át a nagy „isEqualToString” blokkot a besorolását kicsit maszkok az eszköz típusát, a termelés, és a másik selejtező után a vessző (Hívom azt az al generáció). Ez csomagolva egy osztály egy szingli hívás SGPlatform amely elkerüli a sok ismétlődő szöveg művelet. Kód elérhető https://github.com/danloughney/spookyGroup
Az osztály lehetővé teszi a dolgokat, mint ez:
if ([SGPlatform iPad] && [SGPlatform generation] > 3) {
// set for high performance
}
és
switch ([SGPlatform deviceMask]) {
case DEVICE_IPHONE:
break;
case DEVICE_IPAD:
break;
case DEVICE_IPAD_MINI:
break;
}
A besorolás az eszközök között a platformBits módszer. Ez a módszer jól kell ismerniük az olvasók ez a téma. Én besorolni a megfelelő eszközöket a típusuk és generációs, mert én inkább érdekelt a teljesítményét, de a forrás lehet csípett, hogy bármely besorolási hogy érdekli, retina kijelző, hálózati képességek, stb ..
- (BOOL)deviceiPhoneOriPod
{
NSString *deviceType = [UIDevice currentDevice].model;
if([deviceType rangeOfString:@"iPhone"].location!=NSNotFound)
return YES;
else
return NO;
}
Mert egyszerű összehasonlítás Mindig szeretem makró:
#define IS_IPOD [[UIDevice currentDevice].model containsString:@"iPod"]
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
Ez egyszerű és könnyen használható.
Válasz Swift 3,
struct DeviceInformation {
// UIDevice.current.model's value is "iPhone" or "iPad",which does not include details; the following "model" is detailed, such as, iPhone7,1 is actually iPhone 6 plus
static let model: String = {
var size = 0
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](repeating: 0, count: Int(size))
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String(cString: machine)
}()
static let uuid = UIDevice.current.identifierForVendor?.uuidString ?? ""
static let idForAdService = ASIdentifierManager.shared().advertisingIdentifier.uuidString
static func diviceTypeReadableName() -> String {
switch model {
case "iPhone1,1": return "iPhone 1G"
case "iPhone1,2": return "iPhone 3G"
case "iPhone2,1": return "iPhone 3GS"
case "iPhone3,1": return "iPhone 4"
case "iPhone3,3": return "iPhone 4 (Verizon)"
case "iPhone4,1": return "iPhone 4S"
case "iPhone5,1": return "iPhone 5 (GSM)"
case "iPhone5,2": return "iPhone 5 (GSM+CDMA)"
case "iPhone5,3": return "iPhone 5c (GSM)"
case "iPhone5,4": return "iPhone 5c (GSM+CDMA)"
case "iPhone6,1": return "iPhone 5s (GSM)"
case "iPhone6,2": return "iPhone 5s (GSM+CDMA)"
case "iPhone7,2": return "iPhone 6"
case "iPhone7,1": return "iPhone 6 Plus"
case "iPhone8,1": return "iPhone 6s"
case "iPhone8,2": return "iPhone 6s Plus"
case "iPhone8,4": return "iPhone SE"
case "iPhone9,1": return "iPhone 7"
case "iPhone9,3": return "iPhone 7"
case "iPhone9,2": return "iPhone 7 Plus"
case "iPhone9,4": return "iPhone 7 Plus"
case "iPod1,1": return "iPod Touch 1G"
case "iPod2,1": return "iPod Touch 2G"
case "iPod3,1": return "iPod Touch 3G"
case "iPod4,1": return "iPod Touch 4G"
case "iPod5,1": return "iPod Touch 5G"
case "iPod7,1": return "iPod Touch 6G"
case "iPad1,1": return "iPad 1G"
case "iPad2,1": return "iPad 2 (Wi-Fi)"
case "iPad2,2": return "iPad 2 (GSM)"
case "iPad2,3": return "iPad 2 (CDMA)"
case "iPad2,4": return "iPad 2 (Wi-Fi)"
case "iPad2,5": return "iPad Mini (Wi-Fi)"
case "iPad2,6": return "iPad Mini (GSM)"
case "iPad2,7": return "iPad Mini (GSM+CDMA)"
case "iPad3,1": return "iPad 3 (Wi-Fi)"
case "iPad3,2": return "iPad 3 (GSM+CDMA)"
case "iPad3,3": return "iPad 3 (GSM)"
case "iPad3,4": return "iPad 4 (Wi-Fi)"
case "iPad3,5": return "iPad 4 (GSM)"
case "iPad3,6": return "iPad 4 (GSM+CDMA)"
case "iPad4,1": return "iPad Air (Wi-Fi)"
case "iPad4,2": return "iPad Air (Cellular)"
case "iPad4,3": return "iPad Air (China)"
case "iPad4,4": return "iPad Mini 2G (Wi-Fi)"
case "iPad4,5": return "iPad Mini 2G (Cellular)"
case "iPad4,6": return "iPad Mini 2G (China)"
case "iPad4,7": return "iPad Mini 3 (Wi-Fi)"
case "iPad4,8": return "iPad Mini 3 (Cellular)"
case "iPad4,9": return "iPad Mini 3 (China)"
case "iPad5,1": return "iPad Mini 4 (Wi-Fi)"
case "iPad5,2": return "iPad Mini 4 (Cellular)"
case "iPad5,3": return "iPad Air 2 (Wi-Fi)"
case "iPad5,4": return "iPad Air 2 (Cellular)"
case "iPad6,3": return "iPad Pro 9.7' (Wi-Fi)"
case "iPad6,4": return "iPad Pro 9.7' (Cellular)"
case "iPad6,7": return "iPad Pro 12.9' (Wi-Fi)"
case "iPad6,8": return "iPad Pro 12.9' (Cellular)"
case "AppleTV2,1": return "Apple TV 2G"
case "AppleTV3,1": return "Apple TV 3"
case "AppleTV3,2": return "Apple TV 3 (2013)"
case "AppleTV5,3": return "Apple TV 4"
case "Watch1,1": return "Apple Watch Series 1 (38mm, S1)"
case "Watch1,2": return "Apple Watch Series 1 (42mm, S1)"
case "Watch2,6": return "Apple Watch Series 1 (38mm, S1P)"
case "Watch2,7": return "Apple Watch Series 1 (42mm, S1P)"
case "Watch2,3": return "Apple Watch Series 2 (38mm, S2)"
case "Watch2,4": return "Apple Watch Series 2 (42mm, S2)"
case "i386": return "Simulator"
case "x86_64": return "Simulator"
default:
return ""
}
}
}
Szeretem Erica Sadun cuccai. Ő magában AppleTV eszközök és mások talán nem gondol.
https://github.com/erica/uidevice-extension/blob/master/UIDevice-Hardware.h
Dutchie432és Brian Robbinsadtak nagy megoldásokat. De van még egy modell hiányzik, a Verizon iPhone 4 . Itt a hiányzó sort.
if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4"; //Verizon
Létrehoztam egy kiterjesztés, amely lehetővé teszi, hogy a 3 szintű azonosítás:
- típusú eszközt
- típusú iPhone / iPad centire
- modellje eszköz
Ez frissíti az előző iOS eszközök
Ahhoz identifiy iPhone 4S, egyszerűen ellenőrizze a következőket:
var isIphone4S: Bool {
let width = UIScreen.main.bounds.size.width
let height = UIScreen.main.bounds.size.height
let proportions = width > height ? width / height : height / width
return proportions == 1.5 && UIDevice.current.model == "iPhone"
}
A lehetséges vales a
[[UIDevice currentDevice] model];
vannak iPod touch, iPhone, iPhone Simulator, iPad,iPad Simulator
Ha azt szeretnénk tudni, hogy melyik hardver iOStönkreteszi a hasonló iPhone3, iPhone4, iPhone5stb alul van a kód, hogy
Megjegyzés: Az alábbi kód nem tartalmazza az összes eszköz húr, én más srácok megtartva az azonos kódot GitHub ezért kérjük, a legfrissebb verzió onnan
Célkitűzés-C : GitHub / DeviceUtil
Swift : GitHub / DeviceGuru
#include <sys/types.h>
#include <sys/sysctl.h>
- (NSString*)hardwareDescription {
NSString *hardware = [self hardwareString];
if ([hardware isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([hardware isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([hardware isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([hardware isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([hardware isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([hardware isEqualToString:@"iPod1,1"]) return @"iPodTouch 1G";
if ([hardware isEqualToString:@"iPod2,1"]) return @"iPodTouch 2G";
if ([hardware isEqualToString:@"iPad1,1"]) return @"iPad";
if ([hardware isEqualToString:@"iPad2,6"]) return @"iPad Mini";
if ([hardware isEqualToString:@"iPad4,1"]) return @"iPad Air WIFI";
//there are lots of other strings too, checkout the github repo
//link is given at the top of this answer
if ([hardware isEqualToString:@"i386"]) return @"Simulator";
if ([hardware isEqualToString:@"x86_64"]) return @"Simulator";
return nil;
}
- (NSString*)hardwareString {
size_t size = 100;
char *hw_machine = malloc(size);
int name[] = {CTL_HW,HW_MACHINE};
sysctl(name, 2, hw_machine, &size, NULL, 0);
NSString *hardware = [NSString stringWithUTF8String:hw_machine];
free(hw_machine);
return hardware;
}
Meg tudja nézni GBDeviceInfo GitHubról is elérhető CocoaPods. Ez biztosítja az egyszerű API kimutatására különböző tulajdonságait támogatásával összes legújabb eszközök:
- Device család
[GBDeviceInfo deviceDetails].family == GBDeviceFamilyiPhone;
- eszköz modellje
[GBDeviceInfo deviceDetails].model == GBDeviceModeliPhone6.
További lásd Readme .
NSString *deviceType = [[UIDevice currentDevice] systemName];
Biztosíthatom, hogy a fenti javasolt fog működni az iOS 7 és újabb. Úgy vélem, hogy működni fog az iOS 6 is. De nem vagyok biztos benne.
Szeretném hozzátenni, hogy letölteni az első és a burkolat színe a készülék van egy saját API:
UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString([device.systemVersion hasPrefix:@"7"] ? @"_deviceInfoForKey:" : @"deviceInfoForKey:");
if ([device respondsToSelector:selector]) {
NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
}
Már blogolt erről, és minta alkalmazást:
Frissítse platform húr.
// Created from this thread: https://gist.github.com/Jaybles/1323251
// Apple TV
if ([platform isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
if ([platform isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3G";
if ([platform isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3G";
if ([platform isEqualToString:@"AppleTV5,3"]) return @"Apple TV 4G";
// Apple Watch
if ([platform isEqualToString:@"Watch1,1"]) return @"Apple Watch";
if ([platform isEqualToString:@"Watch1,2"]) return @"Apple Watch";
// iPhone
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 (GSM)";
if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (GSM/2012)";
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 (GSM)";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (Global)";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (Global)";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (Global)";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7 (Global)";
if ([platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7 (GSM)";
if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus (Global)";
if ([platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus (GSM)";
// iPad
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad 1";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (Mid 2012)";
if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (CDMA)";
if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (Global)";
// iPad Air
if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";
if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";
if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air (China)";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
// iPad Mini
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)";
if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (Global)";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2 (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2 (Cellular)";
if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2 (China)";
if ([platform isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 (WiFi)";
if ([platform isEqualToString:@"iPad4,8"]) return @"iPad Mini 3 (Cellular)";
if ([platform isEqualToString:@"iPad4,9"]) return @"iPad Mini 3 (China)";
if ([platform isEqualToString:@"iPad5,1"]) return @"iPad Mini 4 (WiFi)";
if ([platform isEqualToString:@"iPad5,2"]) return @"iPad Mini 4 (Cellular)";
// iPad Pro
if ([platform isEqualToString:@"iPad6,3"]) return @"iPad Pro (9.7 inch/WiFi)";
if ([platform isEqualToString:@"iPad6,4"]) return @"iPad Pro (9.7 inch/Cellular)";
if ([platform isEqualToString:@"iPad6,7"]) return @"iPad Pro (12.9 inch/WiFi)";
if ([platform isEqualToString:@"iPad6,8"]) return @"iPad Pro (12.9 inch/Cellular)";
// iPod
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPod7,1"]) return @"iPod Touch 6G";
// Simulator
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";













