support solucion queda por pide logo español desactivar desactivado conectarse conectar cable borrar bloqueado apple iphone objective-c ios p2p device

solucion - Detecta el modelo específico de iPhone/iPod touch



support.apple.com/iphone/restore en español (6)

¿Qué hay de este código, si se lanzó una nueva versión, será identificador con el último dispositivo conocido

#include <sys/types.h> #include <sys/sysctl.h> - (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 @"iPhone4 AT&T"; //iPhone 4 - AT&T if ([sDeviceModel isEqual:@"iPhone3,2"]) return @"iPhone4 Other"; //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:@"iPhone5,1"]) return @"iPhone5"; //iPhone 5 (GSM) 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; }

Posible duplicado:
Determinar dispositivo (iPhone, iPod Touch) con iPhone SDK

Estoy haciendo un juego que utiliza las capacidades bluetooth peer-to-peer del iPhone (y probablemente el iPod touch de segunda generación). Sin embargo, para evitar que los usuarios intenten jugar un modo multijugador en un iPod 1st gen y iPhone 2G, necesito verificar el modelo de dispositivo específico.

El modelo [[UIDevice currentDevice]] solo me dirá si el dispositivo es un "iPhone" o un "iPod touch". ¿Hay alguna manera de verificar el modelo de dispositivo específico, como: "iPhone 3GS", "iPod touch de 1ª generación" o algo así.

EDITAR:

Hay una categoría para UIDevice (creo que ha sido creada por Erica Sadun, no me explico) que usa el siguiente código para obtener el modelo de dispositivo específico. Puede encontrar toda la categoría aquí junto con otras cosas útiles: https://github.com/erica/uidevice-extension

#include <sys/types.h> #include <sys/sysctl.h> @implementation UIDevice (Hardware) /* Platforms iPhone1,1 -> iPhone 1G iPhone1,2 -> iPhone 3G iPod1,1 -> iPod touch 1G iPod2,1 -> iPod touch 2G */ - (NSString *) platform { 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); return platform; }

Esto funciona y las aplicaciones que usan esto han sido aprobadas recientemente en la AppStore.


La categoría más completa de UIDevice (Hardware) probablemente sea http://github.com/erica/uidevice-extension/ (por Erica Sadun):

[[UIDevice currentDevice] platformType] // ex: UIDevice4GiPhone [[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"


Puede obtener el número de modelo del dispositivo usando uname de sys/utsname.h . Por ejemplo:

#import <sys/utsname.h> NSString* machineName() { struct utsname systemInfo; uname(&systemInfo); return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; }

El resultado debería ser:

@"i386" on the simulator @"iPod1,1" on iPod Touch @"iPod2,1" on iPod Touch Second Generation @"iPod3,1" on iPod Touch Third Generation @"iPod4,1" on iPod Touch Fourth Generation @"iPhone1,1" on iPhone @"iPhone1,2" on iPhone 3G @"iPhone2,1" on iPhone 3GS @"iPad1,1" on iPad @"iPad2,1" on iPad 2 @"iPad3,1" on iPad 3 (aka new iPad) @"iPhone3,1" on iPhone 4 @"iPhone4,1" on iPhone 4S @"iPhone5,1" on iPhone 5 @"iPhone5,2" on iPhone 5


iPhone 4 es iPhone3,1 y iPhone3,2
iPhone 4S es iPhone4,1
iPad 2 es iPad2,1 iPad2,2 y iPad2,3 según la versión (GSM, etc.)
iPad 3 es iPad3,1 iPad3,2 y iPad3,3 según la versión (GSM, etc.)

Ver secretos de Iphone (desplácese hacia abajo para "códigos internos de productos")

Otra buena fuente es: everyiphone.com


BOOL hasHighResScreen = NO; if ([UIScreen instancesRespondToSelector:@selector(scale)]) { CGFloat scale = [[UIScreen mainScreen] scale]; if (scale > 1.0) { hasHighResScreen = YES; } }


NSString* valueDevice = [[UIDevice currentDevice] model];

y luego verifique si la cadena es igual a cualquier dispositivo que esté buscando:

if(value==@"iPod1,1" ) {}

y deberías ser bueno para ir