lo tanto, si no se preocupan por las nuevas reglas AppStore etc ... Aquí van:
- (NSString *)getSystemUUID {
io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,IOServiceMatching("IOPlatformExpertDevice"));
if (!platformExpert)
return nil;
CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,CFSTR(kIOPlatformUUIDKey),kCFAllocatorDefault, 0);
IOObjectRelease(platformExpert);
if (!serialNumberAsCFString)
return nil;
return (__bridge NSString *)(serialNumberAsCFString);;
}
Por favor Nota:
- es necesario agregar a su
IOKit.framework
proyecto para que este funcione.
- Este código es compatible con ARC;
- Este código es seguro y devolverá un
nil
NSString
si algo sale mal;
- Apple no garantiza que todos los sistemas futuros tengan un número de serie legible por software.
- Los desarrolladores no deben hacer ninguna suposición sobre el formato del número de serie, como su longitud o qué caracteres puede contener .
Debería llamarse 'IOObjectRelease (platformExpert);' dentro del bloque '! SerialNumberAsCFString'? Leyendo solo el código, esto parece ser necesario. –
@DjS sí, tienes un buen punto. Hice una edición para arreglar esto. – TCB13
¿Qué pasa si nos importan las nuevas reglas de AppStore? – tofutim