2009-04-16 9 views
10

Chcę poznać numer seryjny mojego iPhone'a za pomocą mojej aplikacji. Mam napisany kod poniżej.Jak programowo uzyskać numer seryjny iPhone'a?

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

Dlaczego wciąż otrzymuję błędny numer seryjny?

+1

Co to znaczy "zły numer seryjny"? Czy to nie jest wyświetlane, czy tylko niepoprawne? –

+0

potrzebujesz numeru seryjnego lub UUID? Dokumenty Apple mówią, że UUID jest unikalny wśród wszystkich urządzeń i że powinieneś używać takiego numeru zamiast numeru seryjnego urządzenia. – balexandre

+1

jest zaakceptowany przez Apple Store? – iKT

Odpowiedz

2

Czy łączysz ramkę IOKit?

Wypróbuj funkcję

id getValue(NSString *iosearch); 

, dostępnego na

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

Można również użyć klasy UIDevice do pobierania innych przydatnych informacji Na przykład, można zrobić:

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

Inne zastosowaniaf Właściwości ul są następujące:

name 
    systemName  
    systemVersion 
    model 
    localizedModel 
+0

ok Próbowałem tego kodu, ale moja aplikacja została nieprawidłowo zakończona i ostrzeżenia w 3 miejscach: 1) CFTypeId propID = NULL; (Wskaźnik bez cast) 2) CFTypeRef prop = IORegistryEntrySearchCFProperty (wpis, \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) (ostrzeżenie: przekazanie argumentu 3 "IORegistryEntrySearchCFProperty" z niezgodnego wskaźnika typu ) –

5

należy zmienić argument 2 z IORegistryEntryCreateCFProperty z CFSTR (kIOPlatformUUIDKey) do CFSTR (kIOPlatformSerialNumberKey). Wtedy otrzymasz poprawny numer seryjny (o długości 11 znaków).

Powiązane problemy