2009-04-16 16 views
10

自分のアプリケーションを使用して自分のiPhoneのシリアル番号を知りたい。私は以下のコードを書いています。iPhoneのシリアル番号をプログラムでどのように取得しますか?

- (NSString*)getSerialNumber 
{ 
CFTypeRef serialNumberAsCFString; 

io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")); 

if (platformExpert) 
{ 
    serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, 0); 
} 

IOObjectRelease(platformExpert); 

NSString *serial = [[NSString alloc] initWithFormat:@"%@",serialNumberAsCFString]; 

    NSLog(@"serail no==>%@",serialNumberAsCFString); 
    NSLog(@"serail no==>%@",serial); 
} 

なぜシリアル番号が間違っていますか?

+1

「間違ったシリアル番号」とはどういう意味ですか?それが表示されていない、または単に間違っていますか? –

+0

シリアル番号またはUUIDが必要ですか?アップルのドキュメントによると、UUIDはすべてのデバイスでユニークであり、デバイスシリアル番号の代わりにこのような番号を使用する必要があります。 – balexandre

+1

はApple Storeで受け付けていますか? – iKT

答えて

2

あなたはIOKitフレームワークをリンクしていますか?

また、あなたは行うことができ、例えば他の有用な情報 を取得するために、UIDeviceクラスを使用することができ

http://blogs.oreilly.com/iphone/2008/08/retrieving-device-information.html

でご利用いただけます

id getValue(NSString *iosearch); 

機能を試してみてください。

NSString *id = [[UIDevice currentDevice] uniqueIdentifier]; 

その他の用途ULのプロパティは以下のものです:

name 
    systemName  
    systemVersion 
    model 
    localizedModel 
+0

ok私はこのコードを試してみましたが、アプリケーションが正しく終了せず、警告を3つの場所に与えます: 1)CFTypeId propID = NULL; (キャスト無しポインタ) 2)CFTypeRef支柱= IORegistryEntrySearchCFProperty(エントリ、 \t \t \t \t \t \t \t \t \t \t \t \t \t kIODeviceTreePlane、iosearch、ゼロ、 \t \t \t \t \t \t \t \t \t \t \t \t \t kIORegistryIterateRecursively );(警告:引数を渡す互換性のないポインタタイプ からの 'IORegistryEntrySearchCFProperty'の3つ) –

5

あなたはCFSTR (kIOPlatformSerialNumberKey)CFSTR (kIOPlatformUUIDKey)からIORegistryEntryCreateCFPropertyの引数2を変更する必要があります。その後、正しいシリアル番号(11文字の長さ)を取得します。

0

すぐに利用できるカテゴリはUIDevice:UIDevice+serialNumberです。これがApp Storeで受け入れられるかどうかはわかりません。

関連する問題