2012-12-24 10 views
5

Czy pakiet SDK udostępnia interfejs API do pobierania bieżącego identyfikatora UUID komputera Macbook?Jak mogę uzyskać identyfikator UUID obecnego komputera Macbook z Objective-C?

+0

Otrzymałem odpowiedź (coś w stylu "mówisz o numerze seryjnym?"), A następnie szybko ją usunąłem, gdy zdałem sobie sprawę, że Macintoshes *** ma *** UUID. [Zdecydowanie można uzyskać UUID] (http://apple.stackexchange.com/questions/72355/how-to-get-uuid-with-python), ale Apple bardzo utrudnia to programowo. Czy potrzebujesz identyfikatora UUID komputera MacBook lub jakiegoś unikalnego identyfikatora (np. Adresu MAC komputera MacBook z karty Ethernet)? Co próbujesz zrobić? –

+0

Wiem, że paragony Mac App Store używają kombinacji nazwy pakietu aplikacji, wersji aplikacji i adresu MAC, więc nawet Apple nie używa UUID do czegoś, co uważasz za idealne. – trojanfoe

Odpowiedz

1

Tak więc, jeśli nie dbają o nowych przepisach AppStore etc ... proszę bardzo:

- (NSString *)getSystemUUID { 
    io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,IOServiceMatching("IOPlatformExpertDevice")); 
    if (!platformExpert) 
     return nil; 

    CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,CFSTR(kIOPlatformUUIDKey),kCFAllocatorDefault, 0); 
    if (!serialNumberAsCFString) 
     return nil; 

    IOObjectRelease(platformExpert); 
    return (__bridge NSString *)(serialNumberAsCFString);; 
} 

Uwaga:

  • Trzeba dodać IOKit.framework do listy projekt, aby zadziałał ten .
  • Ten kod jest zgodny z ARC;
  • Ten kod jest bezpieczny i zwróci nilNSString, jeśli coś pójdzie nie tak;
  • Apple nie gwarantuje, że wszystkie przyszłe systemy będą posiadały odczytywalny przez oprogramowanie numer seryjny.
  • Deweloperzy nie powinni przyjmować żadnych założeń dotyczących formatu numeru seryjnego , takich jak jego długość lub znaki, które może on zawierać.
Powiązane problemy