Also, wenn Sie über die neuen Regeln App Store etc do not care ... hier geht:
- (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);;
}
Bitte beachten Sie:
- Sie müssen hinzufügen
IOKit.framework
zu Ihrem Projekt, damit dieses funktioniert.
- Dieser Code ist ARC-kompatibel;
- Dieser Code ist sicher und es wird ein
nil
NSString
zurückgegeben, wenn etwas schief geht;
- Apple garantiert nicht, dass alle zukünftigen Systeme über eine Software-lesbare Seriennummer verfügen.
- Entwickler sollten keine Annahmen über das Format der Seriennummer machen, wie zum Beispiel die Länge oder welche Zeichen es enthalten darf.
Sollte 'IOObjectRelease (platformExpert);' auch im '! SerialNumberAsCFString'-Block aufgerufen werden? Wenn man nur den Code liest, scheint dies notwendig zu sein. –
@DjS ja du hast einen guten Punkt. Ich habe einen Schnitt gemacht, um das zu beheben. – TCB13
Was ist, wenn uns die neuen AppStore-Regeln wichtig sind? – tofutim