2009-04-16 14 views
10

Uygulamamı kullanarak iPhone'umun seri numarasını bilmek istiyorum. Aşağıda yazılı kod var.iPhone'un seri numarasını nasıl programlı olarak alıyorsunuz?

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

Neden hala yanlış seri numarası alıyorum?

+1

"Yanlış seri numarası" nı kastediyorsunuz? Gösterilmiyor mu, yoksa yanlış mı? –

+0

Seri numarasına veya UUID'ye mi ihtiyacınız var? Apple belgeleri, UUID'nin tüm cihazlar arasında benzersiz olduğunu ve bunun yerine Cihaz Seri Numarası'nı kullanmanız gerektiğini söylüyor. – balexandre

+1

, Apple Store tarafından kabul edildi mi? – iKT

cevap

2

IOKit çerçevesini bağlar mısınız?

Ayrıca Mesela diğer faydalı bilgiler almak için UIDevice sınıfını kullanabilirsiniz

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

mevcut

id getValue(NSString *iosearch); 

fonksiyonunu deneyin yapabileceğiniz:

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

Diğer kullanım ül özellikleri aşağıdaki olanları şunlardır:

name 
    systemName  
    systemVersion 
    model 
    localizedModel 
+0

tamam Bu kodu denedim, ancak uygulamam yanlış şekilde sonlandırıldı ve bana 3 yerde uyarı ver: 1) CFTypeId propID = NULL; (Döküm olmayan işaretçi) 2) CFTypeRef prop = IORegistryEntrySearchCFProperty (giriş, \t \t \t \t \t \t \t \t \t \t \t \t \t kIODeviceTreePlane, iosearch nil, \t \t \t \t \t \t \t \t \t \t \t \t \t kIORegistryIterateRecursively); (uyarı: geçen argüman Uyumsuz işaretçi türü 'dan 'IORegistryEntrySearchCFProperty' 3) –

5

Sen CFSTR (kIOPlatformSerialNumberKey) için CFSTR (kIOPlatformUUIDKey) den IORegistryEntryCreateCFProperty ait argüman 2 değişmelidir. Sonra doğru seri numarasını (11 karakter uzunluğunda) alacaksınız.

İlgili konular