iOS7获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息
2014-12-11 11:25
453 查看
原创文章不易,转载时请保留原始链接:/article/11386059.html 谢谢!!
在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、加入声明
3、使用如下方法获取
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
******************************************************************
后话:第一次在csdn上写博客,希望能养成写博客的这个好习惯。
******************************************************************
原创文章不易,转载时请保留原始链接:/article/11386059.html 谢谢!!
在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、加入声明
OBJC_EXTERNCFStringRef MGCopyAnswer(CFStringRef key) WEAK_IMPORT_ATTRIBUTE;
3、使用如下方法获取
CFStringRef UDID = MGCopyAnswer(CFSTR("UniqueDeviceID")); CFStringRef IMEI =MGCopyAnswer(CFSTR("InternationalMobileEquipmentIdentity")); CFStringRefserialNumber = MGCopyAnswer(CFSTR("SerialNumber"));
CFArrayRef ICCIDArray =MGCopyAnswer(CFSTR("CarrierBundleInfoArray")); CFDictionaryRef ICCIDDic =CFArrayGetValueAtIndex(ICCIDArray, 0); CFStringRef ICCID =CFDictionaryGetValue(ICCIDDic, CFSTR("IntegratedCircuitCardIdentity"));
CFStringRefwifiAddress = MGCopyAnswer(CFSTR("WifiAddress")); CFStringRefbluetoothAddress = MGCopyAnswer(CFSTR("BluetoothAddress")); CFStringRefCPUArchitecture = MGCopyAnswer(CFSTR("CPUArchitecture")); CFStringRefproductType = MGCopyAnswer(CFSTR("ProductType")); CFTypeRefairplaneMode = MGCopyAnswer(CFSTR("AirplaneMode")); 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
******************************************************************
后话:第一次在csdn上写博客,希望能养成写博客的这个好习惯。
******************************************************************
原创文章不易,转载时请保留原始链接:/article/11386059.html 谢谢!!
相关文章推荐
- 获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息
- iPhone 的序列号「Serial No.」、UDID、IMEI、ICCID 分别是什么意思
- Android UUID生成(IMEI、设备序列号、MAC地址)
- iOS系统 查看设备序列号 获取UDID
- 获取设备UDID等设备信息
- iPhone 的序列号「Serial No.」、UDID、IMEI、ICCID 分别是什么意思
- 获取进程信息和设备信息(包括设备类型,序列号,ios版本等
- 根据mac地址+deviceid获取设备唯一编码 获取手机及SIM卡相关信息
- android 获取手机上面的IMSI序列号,IMEI,MAC地址,IP地址,当前时间,当前经纬度,获取网络类型
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
- 获取计算机的信息(IP地址、MAC地址、CUP序列号、硬盘序列号、主板信息等等)
- iPhone 的序列号「Serial No.」、UDID、IMEI、ICCID 分别是什么意思
- 获取硬盘序列号,CPU,mac地址等信息 win7下也行
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
- 获取Android手机设备的IMSI / IMEI 信息
- android 获取当前设备的ip地址 mac地址 设备号 手机号 运营商信息
- iPhone 的序列号「Serial No.」、UDID、IMEI、ICCID 分别是什么意思
- iOS7以下设备获取mac地址
- 获取手机设备信息 IMEI
- Android 获取手机的IMEI等设备信息