2009-05-05 10 views
20

Voglio ottenere IMEI su iPhone. Provo a utilizzare il seguente codice:Come ottenere IMEI su iPhone?


#import "Message/NetworkController.h" 
NetworkController *ntc=[[NetworkController sharedInstance] autorelease]; 
NSString *imeistring = [ntc IMEI]; 

Ma NetworkController non è stato trovato.

Trovo anche che posso ottenere uniqueIdentifier utilizzando:


UIDevice *myDevice = [UIDevice currentDevice]; 
NSString *identifier = myDevice.uniqueIdentifier; 

Ma questo non mi può aiutare a ottenere IMEI.

Qualche suggerimento su come ottenere IMEI su iPhone?

risposta

13

Ho trovato che erica ha pubblicato il file di intestazione "Message/NetworkController.h" su ericasadun.com. http://ericasadun.com/iPhoneDocs300/_network_controller_8h-source.html (E 'stato rimosso ora)

ho creato un file di intestazione, copia e incolla il file NetworkController.h in esso e aggiungere il quadro privata "Message.framework" per il mio progetto, importare il file di intestazione che ho creato.

Ora posso utilizzare il metodo originale che ho trovato per ottenere il numero di imei.

NetworkController *ntc = [NetworkController sharedInstance]; 
NSString *imeistring = [ntc IMEI]; 

[MODIFICATO] Non funziona più. L'app verrà respinta da Apple. Invece dovrai usare l'UDID. Vedi post qui sotto.

+4

Erica ha pubblicato un nuovo metodo per ottenere IMEI qui: http://github.com/erica/uidevice-extension/blob/master/UIDevice-IOKitExtensions.m –

+1

Message.framework? Intendi il framework MessageUI? –

+0

No, è un framework privato su iOS3. Non c'è bisogno di usarlo ora coz erica ha pubblicato un nuovo modo di imei. –

7

Non riesci a trovare l'IMEI a livello di codice su iPhone.

3

Sono sicuro che ci sono ragioni per cui non è possibile farlo facilmente. App di sblocco automatico? Io non la penso così Sono sicuro che anche Apple e AT & non gradirebbero troppo.

* # 06 # è il modo per farlo manualmente.

+0

cosa è # 06 #? Puoi spiegare un po 'di più? –

+1

composizione * # 06 # su tutti i telefoni cellulari che conosco mostreranno il loro IMEI. Questo è hash-zero-sei-hash. – bsneeze

4

Non esiste un metodo ufficiale per ottenerlo, ma nel framework privato di Apple CoreTelephony.framework esiste un metodo CTGetIMEI che potrebbe essere di aiuto.

+1

Sto usando il frame CoreTelephony in una delle app. Ma non riesco a capire come posso usare le funzioni __CTGetIMEI per ottenere il numero IMEI dell'iPhone? Puoi per favore aiutare? –

2

aggiungere un file testa "CoreTelephony.h" al progetto

CoreTelephony.h

struct CTServerConnection 
{ 
    int a; 
    int b; 
    CFMachPortRef myport; 
    int c; 
    int d; 
    int e; 
    int f; 
    int g; 
    int h; 
    int i; 
}; 

struct CTResult 
{ 
    int flag; 
    int a; 
}; 

struct CTServerConnection * _CTServerConnectionCreate(CFAllocatorRef, void *, int *); 

void _CTServerConnectionCopyMobileIdentity(struct CTResult *, struct CTServerConnection *, NSString **); 

aggiungere il seguente codice alla classe

#import "CoreTelephony.h" 

struct CTServerConnection *sc=NULL; 
struct CTResult result; 
void callback() { } 

ora, è possibile ottenere IMEI facilmente

NSString *imei; 
_CTServerConnectionCopyMobileIdentity(&result, sc, &imei); 
+0

non funziona per me quando lo test su simulatore iPhone (restituisce vuoto) è quello previsto? – Cemre

+0

Si prega di verificare questo sul vero iPhone, ho provato questo su iPhone4, ios5.1.1 – Vanguarder

+1

Puoi dirmi se Apple accetterebbe questo? – tausun

2

Ho effettuato una ricerca solo qui in StackOverflow e la conclusione è che Apple non consente più di trovare telefono EMEI dopo iOS 6.

È possibile identificare un dispositivo tramite UDID. Ho trovato la mia risposta qui https://stackoverflow.com/a/19927376/2283308