2009-04-16 10 views
10

Voglio conoscere il numero seriale del mio iPhone usando la mia applicazione. Ho scritto il codice qui sotto.Come si ottiene a livello di programmazione il numero di serie di un 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); 
} 

Perché sto ancora ricevendo il numero di serie errato?

+1

Cosa intendi per "numero di serie errato"? Non sta mostrando, o è solo sbagliato? –

+0

hai bisogno del numero seriale o dell'UUID? I documenti Apple dicono che UUID è unico tra tutti i dispositivi e che è necessario utilizzare tale numero invece di Numero di serie del dispositivo. – balexandre

+1

è accettato da Apple Store? – iKT

risposta

2

Stai collegando il framework IOKit?

Prova la funzione

id getValue(NSString *iosearch); 

, disponibile presso

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

È inoltre possibile utilizzare la classe UIDevice per recuperare altre informazioni utili Per esempio, si può fare:

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

Altro uso proprietà ul sono le seguenti:

name 
    systemName  
    systemVersion 
    model 
    localizedModel 
+0

ok Ho provato questo codice, ma la mia applicazione è stata interrotta in modo improprio e mi ha dato avvisi in 3 punti: 1) CFTypeId propID = NULL; (Puntatore senza getto) 2) CFTypeRef prop = IORegistryEntrySearchCFProperty (ingresso, \t \t \t \t \t \t \t \t \t \t \t \t \t kIODeviceTreePlane, iosearch, pari a zero, \t \t \t \t \t \t \t \t \t \t \t \t \t kIORegistryIterateRecursively) (attenzione: argomento di passaggio 3 di 'IORegistryEntrySearchCFProperty' dal tipo di puntatore incompatibile ) –

5

si dovrebbe cambiare l'argomento 2 di IORegistryEntryCreateCFPropertyCFSTR (kIOPlatformUUIDKey)-CFSTR (kIOPlatformSerialNumberKey). Quindi otterrai il numero seriale corretto (con una lunghezza di 11 caratteri).

0

Categoria pronta per l'uso su UIDevice: UIDevice+serialNumber. Non sono sicuro che questo sarà accettato su App Store.

Problemi correlati