2009-05-05 18 views
20

Tôi muốn nhận IMEI trên iPhone. Tôi cố gắng sử dụng mã sau:Cách nhận IMEI trên iPhone?


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

Nhưng không tìm thấy NetworkController.

Tôi cũng thấy rằng tôi có thể nhận uniqueIdentifier sử dụng:


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

Nhưng điều này không thể giúp tôi để có được IMEI.

Bất kỳ đề xuất nào về cách nhận IMEI trên iPhone?

Trả lời

13

Tôi thấy rằng erica đã đăng tệp tiêu đề "Message/NetworkController.h" trên ericasadun.com. http://ericasadun.com/iPhoneDocs300/_network_controller_8h-source.html (Hiện đã bị xóa)

Tôi đã tạo tệp tiêu đề, sao chép và dán tệp NetworkController.h vào đó và thêm khung "Message.framework" riêng vào dự án của tôi, nhập tệp tiêu đề tôi đã tạo.

Bây giờ tôi có thể sử dụng phương pháp ban đầu mà tôi đã tìm thấy để lấy số imei.

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

[CHỈNH SỬA] Không hoạt động nữa. Ứng dụng sẽ bị Apple từ chối. Thay vào đó, bạn sẽ phải sử dụng UDID. Xem bài đăng bên dưới.

+4

Erica đã đăng một cách mới để nhận IMEI tại đây: http://github.com/erica/uidevice-extension/blob/master/UIDevice-IOKitExtensions.m –

+1

Message.framework? Bạn có nghĩa là khung MessageUI? –

+0

Không, đó là khung riêng tư trên iOS3. Không cần phải sử dụng nó ngay bây giờ coz erica đã đăng một cách mới để nhận được imei. –

7

Bạn không thể tìm thấy IMEI theo lập trình trên iPhone.

3

Tôi chắc chắn có những lý do khiến bạn không thể thực hiện việc này một cách dễ dàng. Ứng dụng tự động mở khóa? Tôi không nghĩ vậy. Tôi chắc chắn Apple và AT & T cũng không thích nó quá nhiều.

* # 06 # là cách để tải thủ công.

+0

# 06 # là gì? Bạn có thể giải thích thêm một chút không? –

+1

quay số * # 06 # trên tất cả các điện thoại di động mà tôi biết sẽ hiển thị IMEI của họ. Đó là sao-băm-zero-sáu-băm. – bsneeze

4

Không có cách chính thức để có được nó, nhưng trong khuôn khổ riêng tư Táo CoreTelephony.framework có một phương pháp CTGetIMEI có thể giúp bạn.

+1

Tôi đang sử dụng khung CoreTelephony trong một trong các ứng dụng. Nhưng không thể tìm ra cách tôi có thể sử dụng các hàm __CTGetIMEI để lấy số IMEI của iPhone? Bạn có thể giúp đỡ không? –

2

thêm một tập tin đầu "CoreTelephony.h" để dự án của bạn

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

thêm đoạn mã sau vào lớp học của bạn

#import "CoreTelephony.h" 

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

bây giờ, bạn có thể nhận được imei dễ dàng

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

không hoạt động đối với tôi khi tôi thử nghiệm trên trình giả lập iPhone (trả về trống) là dự kiến? – Cemre

+0

Vui lòng kiểm tra điều này trên iPhone thực, tôi đã thử nghiệm điều này trên iPhone4, ios5.1.1 – Vanguarder

+1

Bạn có thể cho tôi biết nếu quả táo sẽ chấp nhận điều này? – tausun

2

Tôi thực hiện tìm kiếm chỉ ở đây trong stackoverflow và kết luận là Apple không cho phép nữa để tìm EMEI điện thoại sau khi iOS 6.

Bạn có thể xác định thiết bị bằng UDID. Tôi tìm thấy câu trả lời ở đây https://stackoverflow.com/a/19927376/2283308