获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息

在iOS7之前, 可以方便的使用 [[UIDevice currentDevice] uniqueIdentifier] 来获取设备的UDID,但是在iOS7之后这个方法不再适用。

 

你可以用[[UIDevicecurrentDevice]valueForKey:@"uniqueIdentifier"];来获取到一个值,但这个值在iOS7中已经变成了FFFFFF+IDFV的值,显然,这个值并不能唯一标识设备。

 

再谈一谈IMEI,这个值好像在5.0的sdk中就不见了,私有库Message.framework的MFNetworkController.h中去掉了这个方法。

 

本以为iOS7及以上系统无法再获取到这些值,但看看别人Cydia,不是取得好好的吗?参考了一下Cydia的源码:

MobileCydia.mm

可以看到它使用了libMobileGestalt.dylib这个动态库,下面说一说具体如何操作。

 

1、导入libMobileGestalt.dylib库

2、加入声明

 

  1. OBJC_EXTERNCFStringRef MGCopyAnswer(CFStringRef key) WEAK_IMPORT_ATTRIBUTE;  

 

 

3、使用如下方法获取

  1. CFStringRef UDID = MGCopyAnswer(CFSTR("UniqueDeviceID"));  
  2. CFStringRef IMEI =MGCopyAnswer(CFSTR("InternationalMobileEquipmentIdentity"));  
  3. CFStringRefserialNumber = MGCopyAnswer(CFSTR("SerialNumber"));  
  1. CFArrayRef ICCIDArray =MGCopyAnswer(CFSTR("CarrierBundleInfoArray"));  
  2. CFDictionaryRef ICCIDDic =CFArrayGetValueAtIndex(ICCIDArray, 0);  
  3. CFStringRef ICCID  =CFDictionaryGetValue(ICCIDDic, CFSTR("IntegratedCircuitCardIdentity"));  
  1. CFStringRefwifiAddress = MGCopyAnswer(CFSTR("WifiAddress"));  
  2. CFStringRefbluetoothAddress = MGCopyAnswer(CFSTR("BluetoothAddress"));  
  3. CFStringRefCPUArchitecture = MGCopyAnswer(CFSTR("CPUArchitecture"));  
  4. CFStringRefproductType = MGCopyAnswer(CFSTR("ProductType"));  
  5. CFTypeRefairplaneMode = MGCopyAnswer(CFSTR("AirplaneMode"));  
  6. if (airplaneMode ==kCFBooleanTrue) { ... }  

 

4、经过测试发现这些方法在iOS7以下不用越狱就能取到、在iOS7中需要越狱并创建xxx.entitlements文件,添加如下权限

5、在BuildSettings的Code SigningEntitlements中添加刚才创建的文件xxx.entitlements

 

6、编译运行

 

7、附上demo工程

http://download.csdn.net/detail/ookcode/8247495

 

8、我的环境

Xcode 6.1

iOS 8.1 SDK

OS X 10.9.5

posted @   meixianLYD  阅读(5257)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示