使用 CoreTelephony 在 iPhone 上获取 IMEI?

Posted

技术标签:

【中文标题】使用 CoreTelephony 在 iPhone 上获取 IMEI?【英文标题】:get IMEI on iPhone with CoreTelephony? 【发布时间】:2013-03-28 01:03:18 【问题描述】:

我已经尝试了接受的答案 How to get IMEI on iPhone? 但我得到了一个空字符串。

我看到有人建议使用 CoreTelephony 框架, 但我不确定如何使用它来获取 IMEI。

关于如何使用这个私有 API 有什么建议吗?

【问题讨论】:

【参考方案1】:

注意:这不再起作用了!

尚未在任何新 iOS 上进行测试。

您必须将 CoreTelephony.h 添加到您的项目中。 确保标题有

int * _CTServerConnectionCopyMobileEquipmentInfo (
                                              struct CTResult * Status,
                                              struct __CTServerConnection * Connection,
                                              CFMutableDictionaryRef * Dictionary
                                              );

那你可以试试这段代码:

#import "CoreTelephony.h"
void getImei() 
struct CTResult it;
CFMutableDictionaryRef kCTDict;
conn = _CTServerConnectionCreate(kCFAllocatorDefault, ConnectionCallback,NULL);
_CTServerConnectionCopyMobileEquipmentInfo(&it, conn, &kCTDict);
NSLog (@ "kCTDict is %@", kCTDict);
CFStringRef meid = CFDictionaryGetValue(kCTDict, CFSTR("kCTMobileEquipmentInfoMEID"));
NSLog (@ "kCTMobileEquipmentInfoMEID is %@", meid);
CFStringRef mobileId = CFDictionaryGetValue(kCTDict,    CFSTR("kCTMobileEquipmentInfoCurrentMobileId"));
NSLog (@ "kCTMobileEquipmentInfoCurrentMobileId is %@", mobileId);

这是CoreTelephony.h

你可以查看我的example project。

注意:我认为代码不能在模拟器上运行,您的应用可能会被拒绝。

【讨论】:

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

拦截电话 - iPhone(连接 CoreTelephony 的正确方法)

iOS 15 崩溃 CoreTelephony

无法检索运营商名称

CoreTelephony eSIM 功能在设备上不起作用

Xcode 10 似乎打破了 com.apple.commcenter.coretelephony.xpc

与名为 com.apple.commcenter.coretelephony.xpc 的服务的连接已失效