我正在为越狱的 iOS 设备开发应用程序。我用 https://github.com/erica/uidevice-extension/blob/master/UIDevice-IOKitExtensions.m获取 IMEI,但在 iPhone 5 上此解决方案不起作用(返回空字符串)。有什么方法可以在 iPhone 5(iOS 6.1.2) 上获取 IMEI?
最佳答案
有几种方法可以在较新的设备上获取 IMEI
1) 私有(private)ManagedConfiguration.framework
CFStringRef MCCTIMEI()
2) CoreTelephony.framework
struct CTResult
{
int flag;
int a;
};
extern CFStringRef kCTMobileEquipmentInfoIMEI;
void *connection = _CTServerConnectionCreate(kCFAllocatorDefault, NULL, NULL);
NSDictionary *info = nil;
struct CTResult result;
_CTServerConnectionCopyMobileEquipmentInfo(&result, connection, &info);
[info autorelease];
CFRelease(connection);
NSString* IMEI = (NSString*)info[(NSString*)kCTMobileEquipmentInfoIMEI];
3) liblockdown.dylib
extern CFStringRef kLockdownIMEIKey;
void* connection = lockdown_connect();
NSString* IMEI = [(NSString*)lockdown_copy_value(connection, NULL, kLockdownIMEIKey) autorelease];
lockdown_disconnect(connection);
我在使用 MCCTIMEI
时遇到了一些问题 - 在设备启动后返回了空的 IMEI。现在我正在使用 CoreTelephony 解决方案,从来没有遇到过问题。
更新
在 iOS 7 上,这些 API 受 com.apple.coretelephony.Identity.get
授权保护。要访问 IMEI(IMSI、电话号码和其他信息),您需要使用 bool 值设置为 true 的权利进行签名。
关于ios - 如何在 iPhone 5 上获取 IMEI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16667988/