por pasar otro nuevo informacion datos contactos configurar como borra apple ios objective-c iphone ipod-touch

ios - otro - pasar contactos de iphone a iphone por bluetooth



Determine el dispositivo(iPhone, iPod Touch) con iPhone SDK (30)

Aquí hay una actualización menor con nuevos modelos:

- (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; }

¿Hay una manera de determinar el dispositivo que ejecuta una aplicación. Quiero distinguir entre iPhone y iPod Touch , si es posible.


Cadenas de plataforma actualizadas para iPad Air 2 y 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; }


Esta es una actualización para UIDeviceHardware.m de la respuesta anterior .

- (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; }


Mas usable

#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

puedes leer propiedades con

NSLog(@"platform %@, retita %@, multitasking %@", [[UIDevice currentDevice] platform], [[UIDevice currentDevice] hasRetinaDisplay] ? @"YES" : @"NO" , [[UIDevice currentDevice] hasMultitasking] ? @"YES" : @"NO");


Por favor, siéntase libre de usar esta clase ( gist @ github )

CÓDIGO QUITADO Y RELOCADO A

https://gist.github.com/1323251

ACTUALIZACIÓN (14/01/11)

Obviamente, este código está un poco desactualizado hasta ahora, pero ciertamente se puede actualizar utilizando el código en este hilo provisto por Brian Robbins que incluye un código similar con modelos actualizados. Gracias por el apoyo en este hilo.


Puedes usar la clase UIDevice esta manera:

NSString *deviceType = [UIDevice currentDevice].model; if([deviceType isEqualToString:@"iPhone"]) // it''s an iPhone


Yo uso esto en mi aplicación. Actualizado a diciembre de 2012.

- (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; }


¿Qué hay de este código? Si se lanzó una nueva versión, se identificará con el último dispositivo conocido.

- (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; }


Dutchie432y Brian Robbinshan proporcionado grandes soluciones. Pero todavía falta un modelo, el iPhone 4 de Verizon . Aquí está la línea que falta.

if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4"; //Verizon


Última actualización: septiembre de 2017 Añadido iPhone X , iPhone 8 , iPhone 8 Plus , Apple Watch Series 3 , Apple TV 4K

Actualización anterior: junio de 2017: iPad Pro 10,5 " iPad Pro 12,9" 2nd Gen

Rápido

(Probado en Swift 4, Swift 3)

La siguiente función devuelve una cadena con el nombre del dispositivo actual.

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 }

Puedes probarlo usando el siguiente código:

print("Current device is: ", self.userDeviceName())

C objetivo

También agregué nuevos dispositivos al código Objective-C

No olvides importar 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; }

Puedes probarlo usando el siguiente código:

NSLog(@"Current device is: %@", [self userDeviceName]);


Actualizar la cadena de la plataforma.

// 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";


Agregando al código de Arash, no me importa mi aplicación qué modelo estoy usando, solo quiero saber qué tipo de dispositivo, así que puedo probar lo siguiente:

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"); } }


El siguiente fragmento de código mencionado debería ayudar:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { // iPhone device } else if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { // iPad device } else { // Other device i.e. iPod }


Los posibles vales de

[[UIDevice currentDevice] model];

son iPod touch, iPhone, iPhone Simulator, iPad,iPad Simulator

Si quieres saber qué hardware iOSestá arruinando el como iPhone3, iPhone4, iPhone5etc a continuación es el código para ese

NOTA: El código a continuación puede no contener toda la cadena del dispositivo. Estoy con otros tipos que mantienen el mismo código en GitHub, así que tome el último código de allí

Objective-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; }


Me gustaría agregar eso para recuperar el color frontal y de la caja del dispositivo. Hay una API privada:

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"]); }

He blogeado sobre esto y proporciono una aplicación de muestra:

http://www.futuretap.com/blog/device-colors/


Para identificar iPhone 4S, simplemente revise lo siguiente:

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" }


Para una comparación simple siempre me gusta la macro:

#define IS_IPOD [[UIDevice currentDevice].model containsString:@"iPod"] #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

Es simple y fácil de usar.


Responde en 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 "" } } }


Sé que ya se ha marcado una respuesta, pero para futuras referencias, siempre se puede usar el tamaño de la pantalla del dispositivo para averiguar qué dispositivo es así:

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."); }


Simplemente agregando el código del dispositivo iPhone 4S a este hilo ...

El iPhone 4S devolverá la cadena @ "iPhone4,1".


Basado en las muy buenas respuestas anteriores, esto es lo que se me ocurrió. Esto es muy similar a la respuesta de @ Rodrigo, pero aborda la preocupación de @ Oliver por el comentario sobre esa respuesta. Esto también proporciona la opción de incluir la cadena del modelo en la cadena de salida.

+ (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]; }


Hay una biblioteca bastante madura (por mí) para eso llamada SDVersion . Puede verificar el modelo de dispositivo en ejecución, el tamaño de la pantalla y muchos otros parámetros. También soporta OSX.

Ejemplo:

// 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");


Lo llevé un poco más lejos y convertí el gran bloque "isEqualToString" en una clasificación de máscaras de bits para el tipo de dispositivo, la generación y ese otro calificador después de la coma (lo llamo subgeneración). Está envuelto en una clase con un SGPlatform de llamada singleton que evita muchas operaciones de cadena repetitivas. El código está disponible https://github.com/danloughney/spookyGroup

La clase te permite hacer cosas como esta:

if ([SGPlatform iPad] && [SGPlatform generation] > 3) { // set for high performance }

y

switch ([SGPlatform deviceMask]) { case DEVICE_IPHONE: break; case DEVICE_IPAD: break; case DEVICE_IPAD_MINI: break; }

La clasificación de los dispositivos está en el método platformBits. Ese método debe ser muy familiar para los lectores de este hilo. He clasificado los dispositivos por su tipo y generación porque estoy más interesado en el rendimiento general, pero se puede modificar la fuente para proporcionar cualquier clasificación que le interese, pantalla de retina, capacidades de red, etc.



Puede consultar GBDeviceInfo en GitHub, también disponible a través de CocoaPods. Proporciona una API simple para detectar varias propiedades con soporte de todos los dispositivos más recientes:

  • Familia de dispositivos

[GBDeviceInfo deviceDetails].family == GBDeviceFamilyiPhone;

  • Modelo de dispositivo

[GBDeviceInfo deviceDetails].model == GBDeviceModeliPhone6.

Para más información vea Readme .


#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; }


- (BOOL)deviceiPhoneOriPod { NSString *deviceType = [UIDevice currentDevice].model; if([deviceType rangeOfString:@"iPhone"].location!=NSNotFound) return YES; else return NO; }


NSString *deviceType = [UIDevice currentDevice].model;


NSString *deviceType = [[UIDevice currentDevice] systemName];

Puedo asegurar que lo sugerido anteriormente funcionará en iOS 7 y superior. Creo que funcionará en iOS 6 también. Pero no estoy seguro de eso.


if([UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad) { //Device is ipad }else{ //Device is iphone }