2012-12-24 28 views
5

SDK có cung cấp API để truy xuất UUID của Macbook hiện tại không?Làm thế nào tôi có thể nhận được UUID của Macbook hiện tại từ Objective-C?

+0

Tôi đã có câu trả lời (giống như "bạn đang nói về một số sê-ri?") Và sau đó nhanh chóng xóa nó, khi tôi nhận ra rằng Macintosh *** có *** có UUID. [Có những cách chắc chắn để có được UUID] (http://apple.stackexchange.com/questions/72355/how-to-get-uuid-with-python), nhưng Apple làm cho nó rất khó để làm điều này lập trình. Bạn có cần UUID của MacBook, hoặc chỉ một số định danh duy nhất (ví dụ: địa chỉ MAC của MacBook từ thẻ Ethernet)? Bạn đang cố làm gì vậy? –

+0

Tôi biết rằng Biên lai cửa hàng ứng dụng Mac sử dụng kết hợp tên gói ứng dụng, phiên bản ứng dụng và địa chỉ MAC để thậm chí Apple không sử dụng UUID cho một cái gì đó bạn nghĩ là lý tưởng. – trojanfoe

Trả lời

1

Vì vậy, nếu bạn không quan tâm đến các quy tắc AppStore mới vv ... ở đây bạn đi:

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

Xin lưu ý:

  • Bạn cần phải thêm IOKit.framework để bạn dự án để thực hiện việc này .
  • Mã này tuân thủ ARC;
  • Mã này an toàn và mã này sẽ trả lại nilNSString nếu xảy ra sự cố;
  • Apple không đảm bảo rằng tất cả các hệ thống trong tương lai sẽ có số sê-ri có thể đọc được phần mềm.
  • Nhà phát triển không được đưa ra bất kỳ giả định nào về định dạng số của số sê-ri chẳng hạn như độ dài hoặc số ký tự của nó có thể chứa.
Các vấn đề liên quan