2012-12-24 15 views
5

SDKは現在のMacbookのUUIDを取得するためのAPIを提供していますか?だから、Objective-Cから現在のMacBookのUUIDを取得するにはどうすればよいですか?

+0

Macintoshes ***にはUUIDがあることに気付いたとき、私は答えを得ました(「あなたはシリアル番号について話していますか?」)。 (http://apple.stackexchange.com/questions/72355/how-to-get-uuid-with-python)[ありUUIDを取得する方法は間違いなくある]が、Appleはそれが非常に難しいプログラム的にこれを行うことができます。 MacBookのUUID、または固有の識別子(EthernetカードのMacBookのMACアドレスなど)が必要ですか?あなたは何をしようとしているのですか? –

+0

私は、Mac App Storeの領収書は、あなたが理想的だと思いますそうではないとしても、Appleが何かのためにUUIDを使用するアプリケーションのバンドル名、アプリのバージョンとMACアドレスの組み合わせを使用することを知っています。 – trojanfoe

答えて

1

、新しいAppStoreのルールなどを気にしない場合は...ここにあなたが行く:

- (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は将来のすべてのシステムがソフトウェアで読み取り可能なシリアル番号を持っていることを保証するものではありません。
  • 開発者は、その長さや何文字それ が含まれていてもよいようにシリアル番号の フォーマットについての仮定を行うべきではありません。
関連する問題