如何在 iPhone 上获取 IMEI?

Posted

技术标签:

【中文标题】如何在 iPhone 上获取 IMEI?【英文标题】:How to get IMEI on iPhone? 【发布时间】:2010-10-23 19:37:11 【问题描述】:

我想在 iPhone 上获取 IMEI。我尝试使用以下代码:

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

但是找不到 NetworkController。

我还发现我可以使用以下方法获取 uniqueIdentifier:

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

但这并不能帮助我获取 IMEI。

【问题讨论】:

【参考方案1】:

您无法在 iPhone 上以编程方式找到 IMEI。

【讨论】:

【参考方案2】:

我确信您不能轻易做到这一点是有原因的。自动解锁应用程序?我不这么认为。我敢肯定 Apple 和 AT&T 也不会太喜欢它。

*#06#是手动获取的方式。

【讨论】:

#06# 是什么?你能再解释一下吗? 在我知道的所有手机上拨打 *#06# 都会显示他们的 IMEI。那是星散列零六散列。【参考方案3】:

官方没有办法获取,但是在苹果的私有框架CoreTelephony.framework中有一个方法CTGetIMEI可能对你有帮助。

【讨论】:

我在其中一个应用程序中使用 CoreTelephony 框架。但无法弄清楚如何使用 __CTGetIMEI 函数来获取 iPhone 的 IMEI 号码?你能帮忙吗?【参考方案4】:

您无法再在 iPhone 上获取 IMEI。您可能必须改用 UDID。查看其他答案。


过去,您可以使用发布在 ericasadun.com 上的头文件“Message/NetworkController.h”。 http://ericasadun.com/iPhoneDocs300/_network_controller_8h-source.html(现已删除)

您将 NetworkController.h 文件和私有框架“Message.framework”添加到您的项目中,然后导入该头文件以使用我找到的原始方法来获取 imei 号:

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

那个 hack 不再起作用了。应用将被 Apple 拒绝。

【讨论】:

Erica 在这里发布了一种获取 IMEI 的新方法:github.com/erica/uidevice-extension/blob/master/… 不,它是 ios3 上的私有框架。现在不用用了,因为z erica已经发布了获取imei的新方法。 @iPhoney 您是否尝试过使用 Erica 的代码并将应用程序提交给 Apple?只是想知道它是否会获得批准。谢谢! 谢谢。我也想知道会不会被苹果封禁 我也想知道会不会被苹果封禁,谢谢【参考方案5】:

将头文件“CoreTelephony.h”添加到您的项目中

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

将以下代码添加到您的课程中

#import "CoreTelephony.h"

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

现在,你可以轻松搞定imei了

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

【讨论】:

当我在 iPhone 模拟器上测试它时对我不起作用(返回空)是预期的吗? 请在真机 iPhone 上测试,我在 iPhone4 ,ios5.1.1 上测试过 不,苹果不会接受这个。我在这里找到了答案***.com/a/19927376/2283308【参考方案6】:

我只在***中进行了搜索,结论是Apple不再允许在iOS 6之后查找手机EMEI。

您可以使用 UDID 识别设备。 我在这里找到了答案https://***.com/a/19927376/2283308

【讨论】:

【参考方案7】:

https://www.telesign.com/products/phone-id

有一家名为 TeleSign 的公司提供的 SDK 可以获取设备的 IMEI 号码(除了运营商、设备所有者的家庭地址等其他内容的列表之外)。商店中一些最大的应用程序使用此提供程序(如 Tinder 和 Evernote)。我不为公司工作,也不曾有过,也没有过想要,而且我从未使用过他们的任何产品。我也不知道苹果是否会拒绝这种 API 的使用。但如果你想要一个 Swift/Objecive-C 接口来获取 IMEI 号码,这就是其中之一。

【讨论】:

以上是关于如何在 iPhone 上获取 IMEI?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CoreTelephony 在 iPhone 上获取 IMEI?

如何在 Cordova for iPhone 中获取 IMEI、序列号、MAC 地址和 Advertiser_id?

以编程方式从iPhone获取IMEI号码[重复]

鉴别日版iPhone如何通过IMEI查询运营商

如何在 android 10 或更高版本中获取设备 ID 或 imei 号码

如何在 PhoneGap 中获取 IMEI 号码?