2012-12-24 1 views
5

SDK는 현재 Macbook의 UUID를 검색하기위한 API를 제공합니까? 당신이 등 새로운 앱 스토어 규칙에 신경 쓰지 않는 경우Objective-C에서 현재 Macbook의 UUID를 얻으려면 어떻게해야합니까?

+0

Macintoshes ***에는 UUID가 있다는 것을 알았을 때 대답을했습니다 ("일련 번호에 대해 이야기하고 있습니까?"와 같은 답변). [UUID를 얻을 수있는 확실한 방법이 있습니다.] (http://apple.stackexchange.com/questions/72355/how-to-get-uuid-with-python), Apple은이를 프로그램 적으로 처리하는 것을 매우 어렵게 만듭니다. MacBook의 UUID 또는 고유 한 식별자 (예 : 이더넷 카드의 MacBook MAC 주소)가 필요합니까? 너 뭐하려고? –

+0

Mac App Store Receipts는 App 번들 이름, 앱 버전 및 MAC 주소의 조합을 사용하므로 Apple이 이상적이라고 생각하는 용도로 UUID를 사용하지 않습니다. – trojanfoe

답변

1

그래서 ... 여기 요 :

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

은 참고 사항 :

  • 당신은에 IOKit.framework를 추가하셔야합니다 이 프로젝트를 수행하려면 이 필요합니다.
  • 이 코드는 ARC 규격을 준수합니다.
  • 이 코드는 안전하며 문제가 생기면 nilNSString을 반환합니다.
  • Apple은 향후 모든 시스템에 소프트웨어가 읽을 수있는 일련 번호가 있음을 보증하지 않습니다.
  • 개발자는 길이 또는 무엇 문자가 포함 할 수 있으므로 일련 번호의 형식에 대한 어떠한 가정도해서는 안됩니다.