2009-05-05 6 views
20

Je veux obtenir IMEI sur iPhone. J'essaie d'utiliser le code suivant:Comment obtenir IMEI sur iPhone?


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

Mais NetworkController est introuvable.

Je trouve aussi que je peux obtenir à l'aide uniqueIdentifier:


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

Mais cela ne peut me aider à obtenir IMEI.

Une suggestion sur la façon d'obtenir IMEI sur iPhone?

Répondre

13

J'ai trouvé que erica avait posté le fichier d'en-tête "Message/NetworkController.h" sur ericasadun.com. http://ericasadun.com/iPhoneDocs300/_network_controller_8h-source.html (Il a été retiré maintenant)

J'ai créé un fichier d'en-tête, copiez et collez le fichier dans NetworkController.h et ajouter le cadre privé « Message.framework » à mon projet, importer le fichier d'en-tête que j'ai créé.

Maintenant, je peux utiliser la méthode originale que j'ai trouvée pour obtenir le numéro imei.

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

[EDITED] Ne fonctionne plus. App sera rejetée par Apple. Au lieu de cela, vous devrez utiliser UDID. Voir le message ci-dessous.

+4

Erica a posté une nouvelle façon d'obtenir IMEI ici: http://github.com/erica/uidevice-extension/blob/master/UIDevice-IOKitExtensions.m –

+1

Message.framework? Voulez-vous dire le cadre MessageUI? –

+0

Non, c'est un framework privé sur iOS3. Il n'y a pas besoin de l'utiliser maintenant coz erica a posté une nouvelle façon d'obtenir imei. –

7

Vous ne pouvez pas trouver l'IMEI par programme sur l'iPhone.

3

Je suis sûr qu'il y a des raisons pour lesquelles vous ne pouvez pas le faire facilement. Application de déverrouillage automatique? Je ne pense pas. Je suis sûr que Apple et AT & T ne voudrais pas trop non plus.

* # 06 # est le moyen de l'obtenir manuellement.

+0

Qu'est-ce que # 06 #? Pouvez-vous expliquer un peu plus? –

+1

la numérotation * # 06 # sur tous les téléphones cellulaires que je connais de montrer leur IMEI. C'est le hash-zéro-six-hash. – bsneeze

4

Il n'y a pas de façon officielle de l'obtenir, mais dans le cadre privé d'Apple CoreTelephony.framework il y a une méthode CTGetIMEI qui pourrait vous aider.

+1

J'utilise CoreTelephony dans l'une des applications. Mais incapable de comprendre comment je peux utiliser les fonctions __CTGetIMEI pour obtenir le numéro IMEI de l'iPhone? Peux-tu aider s'il te plait? –

2

ajouter un fichier tête "CoreTelephony.h" à votre projet

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 **); 

ajoutez le code suivant à votre classe

#import "CoreTelephony.h" 

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

maintenant, vous pouvez obtenir imei facilement

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

ne fonctionne pas pour moi quand je l'ai testé sur simulateur iPhone (renvoie vide) est ce que prévu? – Cemre

+0

S'il vous plaît tester ceci sur le vrai iPhone, j'ai testé ceci sur iPhone4, ios5.1.1 – Vanguarder

+1

Pouvez-vous me dire si Apple accepterait ceci? – tausun

2

J'ai fait une recherche seulement ici dans stackoverflow et la conclusion est que Apple ne permet plus de trouver le téléphone EMEI après iOS 6.

Vous pouvez identifier un périphérique en utilisant UDID. J'ai trouvé ma réponse ici https://stackoverflow.com/a/19927376/2283308

Questions connexes